ParseUser.getCurrentUser() время от времени является нулевым, даже если выход из системы не вызывается
Проблема: После того, как пользователь успешно вошел в приложение, время от времени (не было определено определенного шаблона относительно того, когда это происходит), ParseUser.getCurrentUser() становится нулевым, даже если выход из системы не вызывается.
Детали: Мы используем Parse SDK на Android, чтобы позволить пользователю войти в систему. Вот как мы инициализируем Parse на Application onCreate:
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 равен нулю, мы показываем экран входа в систему следующим образом:
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
}
)
});
Спасибо, Джайкишан