即使没有调用logout,ParseUser.getCurrentUser()偶尔会为null

时间:2016-07-21 07:20:01

标签: android parse-platform parse-android-sdk

问题: 一旦用户成功登录到应用程序,偶尔(没有确定何时发生这种情况的确定模式),即使没有调用注销,ParseUser.getCurrentUser()也会变为空。

详细信息: 我们在Android上使用Parse SDK让用户登录。这就是我们在Application onCreate上初始化Parse的方法:

Parse.Configuration.Builder parseConfiguration = new Parse.Configuration.Builder(this)
                .applicationId(getString(R.string.parse_app_id))
                .clientKey(getString(R.string.parse_client_key))
                .server(getString(R.string.parse_server_url))
                .enableLocalDataStore();

Parse.initialize(parseConfiguration.build());

在同一方法中,我们还会获取用户的最新信息:

if (ParseUser.getCurrentUser() != null) {
    ParseUser.getCurrentUser().fetchInBackground();
}

然后在我们的主要活动中,如果currentUser为null,我们将按如下方式显示登录屏幕:

if ( ParseUser.getCurrentUser() == null) {
    Intent intent = new Intent(this, LoginActivity.class);
    startActivityForResult(intent, LOGIN_REQUEST);
}

在LoginActivity中,我们获得Facebook&直接使用Google身份验证令牌(不使用Parse SDK)。一旦我们获得了facebook / google访问令牌,我们就会调用

Task<ParseUser> parseUserTask = ParseUser.logInWithInBackground("facebook", authData);

成功完成此任务后,我们会让用户登录并使用该应用。整个流程很有效。

然而,偶尔(随机),用户会显示登录屏幕。在我们的应用程序中,我们不会在任何地方调用注销或调用登录屏幕工作流程。有人可以建议可能的原因吗?

如果有任何帮助,我们将在AWS上托管我们的服务器并按如下方式对其进行初始化:

var api = new ParseServer({
  databaseURI: databaseUri
  cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
  appId: process.env.APP_ID,
  masterKey: process.env.MASTER_KEY,
  serverURL: process.env.SERVER_URL,
  push: {
      android: {
          senderId: process.env.GOOGLE_GCM_SENDER_ID,
          apiKey: process.env.GOOGLE_GCM_API_KEY
      }
  },
  filesAdapter: new S3Adapter(
      process.env.S3_AWS_ACCESS_KEY_ID,
      process.env.S3_AWS_SECRET_ACCESS_KEY,
      process.env.S3_BUCKET_NAME,
      {
          directAccess: true, 
          bucketPrefix: process.env.S3_BUCKET_NAME
      }
    )
});

谢谢, Jaikishan

0 个答案:

没有答案