У меня проблема с реализацией "входа в Google" в приложении для Android. Код выглядит так:
GoogleSignInClient signInClient = GoogleSignIn.getClient(MainActivity.this, gso);
Task<GoogleSignInAccount> googleSignInAccountTask = signInClient.silentSignIn();
if (googleSignInAccountTask.isSuccessful()) {
// There's immediate result available.
GoogleSignInAccount signInAccount = googleSignInAccountTask.getResult();
} else {
// There's no immediate result ready, displays some progress indicator and waits for the
// async callback.
googleSignInAccountTask.addOnCompleteListener((OnCompleteListener) task -> {
try {
GoogleSignInAccount signInAccount = (GoogleSignInAccount) task.getResult(ApiException.class);
} catch (Exception apiException) {
Intent signInIntent = signInClient.getSignInIntent();
startActivityForResult(signInIntent, 12123);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
});
}
Ожидаемое поведение:
1. Пользователь открывает приложение в первый раз.
2. Откроется диалоговое окно «Вход в Google» с выбранными учетными записями. Пользователь выбирает аккаунт.
2. Пользователь закрывает приложение и открывает снова. Так как выбран аккаунт, тихий вход в систему работает, а аккаунт пользователя доступен без взаимодействия с пользователем.
Однако при каждом запуске приложения отображается диалоговое окно с выбранными учетными записями. После перезапуска приложения «googleSignInAccountTask.isSuccessful ()» всегда возвращает false. Этот «silentSignIn ()» не работает.
Я не хочу показывать это диалоговое окно при каждом запуске приложения. Любые намеки, как этого добиться? iOS SDK работает как положено. Он как-то помнит, что аккаунт был выбран.