问题: 一旦用户成功登录到应用程序,偶尔(没有确定何时发生这种情况的确定模式),即使没有调用注销,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