問題: ユーザーがアプリに正常にログインすると、ときどき (これがいつ発生するかについての明確なパターンは特定されていません)、ログアウトが呼び出されなくても ParseUser.getCurrentUser() が null になります。
詳細: ユーザーがログインできるように、Android で Parse SDK を使用しています。これは、アプリケーションの 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
}
)
});
ありがとう、ジャイキシャン