Я пытаюсь реализовать автоматизацию входа игрока в игры Google Play в моем приложении для Android. Во-первых, как уже упоминалось здесь , я пытаюсь войти в систему без вывода сообщений:
@Override
protected void onResume() {
super.onResume();
signInSilently();
}
private void signInSilently() {
mGoogleSignInClient.silentSignIn().addOnCompleteListener(this, task -> {
if (task.isSuccessful())
//everything ok
else {
final ApiException exception = (ApiException) task.getException();
if (BuildConfig.DEBUG)
Log.d(TAG, "Silent Sign In failure: ", exception);
if (exception.getStatusCode() == CommonStatusCodes.SIGN_IN_REQUIRED)
startSignInIntent();
}
});
Каждый раз, когда я получал исключение с кодом 4 (CommonStatusCodes.SIGN_IN_REQUIRED). Поэтому в этом случае я пытаюсь войти с помощью пользовательского интерфейса:
private void startSignInIntent() {
startActivityForResult(mGoogleSignInClient.getSignInIntent(), RC_SIGN_IN);
}
@Override
protected void onActivityResult(int request, int response, Intent data) {
super.onActivityResult(request, response, data);
if (request == RC_SIGN_IN) {
final GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
// everything is ok, get account from result
} else if (result.getStatus().hasResolution()) {
resolveManually(result.getStatus());
} else {
String message = result.getStatus().getStatusMessage();
if (BuildConfig.DEBUG)
Log.d(TAG, "status code" + result.getStatus().getStatusCode());
if (message == null || message.isEmpty()) {
message = "other error";
}
new AlertDialog.Builder(this).setMessage(message)
.setNeutralButton(android.R.string.ok, null).show();
}
}
}
И здесь каждый раз, когда я получаю сообщение с другой ошибкой! Код состояния снова равен 4 (CommonStatusCodes.SIGN_IN_REQUIRED). Как я могу получить этот код, когда я пытаюсь войти с помощью намерения? Итак, мое приложение находится в бесконечном цикле, потому что onResume вызывается каждый раз, когда моя активность загружается после получения результата, и каждый раз, когда код состояния - CommonStatusCodes.SIGN_IN_REQUIRED. Так в чем же проблема?
В Google samples нет информации о том, как я могу обработать автоматический вход, только руководство с кнопками входа. Но Google рекомендует использовать автоматизированный вход. Пожалуйста, помогите всем понять, что здесь не так.