Кажется, что это базовая функция, но после изучения учебного пособия по входу она будет работать только в том случае, если я выберу учетную запись, которая уже зарегистрирована на устройстве.
После выбора ' Использовать другую учетную запись ' и выполнения некоторых шагов для ее аутентификации теряется результат обратного вызова, (onActivityResult
is не вызывается ).
Я использую GoogleSignInOptions
: исключений не возникает, и я не могу добавить прослушиватель для обнаружения исключений.
Однако GoogleApiClient
работает нормально, но есть некоторые устаревшие методы, поэтому я решил переключиться на GoogleSignInOptions
, чтобы избежать проблем с устареванием.
Initizlization:
googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
googleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);
при нажатии:
signInButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
signIn();
}
});
private void signIn() {
googleSignInClient.signOut();
Intent signInIntent = googleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 123 && data != null) {
handleSignInResult(data);
}
}
private void handleSignInResult(Intent data) {
Task<GoogleSignInAccount> signInTask = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount googleSignInAccount = signInTask.getResult(ApiException.class);
if (googleSignInAccount != null) {
updateUI(googleSignInAccount);
}
} catch (ApiException e) {
e.printStackTrace();
}
}
Кто-нибудь может помочь, пожалуйста?