从parse.com获取错误的数据

时间:2015-04-07 18:08:01

标签: android parse-platform

我正在使用Parse和他们的电子邮件身份验证服务。未单击发送到其电子邮件ID的链接的用户将在emailVerified列下具有false值。所以,我编写了一个代码来检查这个值是真还是假。

ParseUser currentUser = ParseUser.getCurrentUser();
    Boolean authenticationValue = currentUser.getBoolean("emailVerified");
    Log.i(TAG, "The Boolean Value is :"+authenticationValue);
    Log.i(TAG, "The current user is :" + currentUser.getUsername());

    if(currentUser != null)
    {
        if (authenticationValue) {
            Log.i(TAG, currentUser.getUsername());
        }
        else {
            Intent intent = new Intent(MainActivity.this, NotAuthenticated.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
        }
    }
    else
    {
        takeToLogin();
    }

我在点击该链接之前检查了该值,并且值为false,如预期的那样。但是,在我点击该链接后,我仍然得到错误的值。

我已经检查了Parse上的仪表板,它说这是真的。那么,这段代码中的错误是什么。

2 个答案:

答案 0 :(得分:0)

再次:尝试使用包裹boolean的{​​{1}} instean,如下所示:

Boolean

我很确定你会得到一份NPE。如果我是对的(你必须检查它),那么这里唯一需要考虑的是你为什么要获得NPE。实际上,隐藏的NPE是boolean authenticationValue = Boolean.valueOf(currentUser.getString("emailVerified").toString()); BooleanauthenticationValue的原因。我更喜欢你认为:) 这是提示:

false

如果该日志输出null,则currentUser中没有值“emailVerified”。尝试记录整个currentUser对象,也许它有toString(),因此你将能够看到它包含的数据:

Log.i(TAG, "The emailVerified Value is: "+currentUser.getString("emailVerified"));

您是否还可以记录可用的密钥:

Log.i(TAG, "The currentUser is: "+String.valueOf(currentUser));

答案 1 :(得分:0)

我搜索了一会儿后得到了解决方案。该应用程序使用本地数据库,而不是每次从Parse获取它。因此,我们必须强制应用程序获取更新的数据。 因此,可以使用以下方法完成。

 ParseUser currentUser = ParseUser.getCurrentUser();
 currentUser.fetchInBackground(new GetCallback<ParseObject>() {
        @Override
        public void done(ParseObject parseObject, com.parse.ParseException e) {
            if (e == null) {
                boolean value = parseObject.getBoolean("emailVerified");
                Log.i(TAG, "The Value is :"+value);
            } else {
                // Failure!
            }
        }
    });