2

問題: ユーザーがアプリに正常にログインすると、ときどき (これがいつ発生するかについての明確なパターンは特定されていません)、ログアウトが呼び出されなくても 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
      }
    )
});

ありがとう、ジャイキシャン

4

0 に答える 0