Falha no login do Google após fazer login e sair com frequência
Posso entrar no meu aplicativo com a Conta do Google várias vezes. Tudo está bem.
Mas se eu entrar e sair cerca de 20 vezes em um ou dois minutos. O login do Google falhou e o loginonActivityResult
função, ele retorna o código de erro 12501, resultCode = 0;
Estou usando o telefone: Nexus 6, Android 5.1.1
Aqui está o meu código:
private GoogleSignInOptions mGso;
private GoogleApiClient mGac;
public void init(@NonNull final BaseActivity activity) {
mGso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(activity.getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGac = new GoogleApiClient.Builder(activity)
.enableAutoManage(activity /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
ToastUtils.show(activity, R.string.login_failed);
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, mGso)
.build();
}
public void signIn(@NonNull final BaseActivity activity,
@NonNull GoogleSignInCallback callback,
@NonNull final OnLoadingListener<PlatformUserEntity> listener) {
callback.registerCallback(listener);
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGac);
activity.startActivityForResult(signInIntent, REQUEST_GOOGLE_SIGNIN);
// disconnect the client
mGac.stopAutoManage(activity);
mGac.disconnect();
}
Aqui está o gradle:
compile 'com.google.android.gms:play-services-base:9.6.1'
compile 'com.google.android.gms:play-services-gcm:9.6.1'
compile 'com.google.android.gms:play-services-auth:9.6.1'
Primeiro, inicio o GoogleApiClient com um FragmentActivity e, em seguida, a função signIn inicia o Acitvity. GoogleSignInCallback está registrado na função onActivityResult. Em seguida, desconecte o cliente porque toda vez que o botão de login for clicado, a função init será chamada.
Duvido que eu usestopAutoManage()
muito cedo, mas parece que não é verdade. Então, eu estou confuso, qual parte pode estar errada?
Notei o log:
Could not set socket write timeout: null
12-03 17:21:43.859 264-264/? W/SurfaceFlinger: couldn't log to binary event log: overflow.
12-03 17:21:43.902 1946-12870/? W/Conscrypt: Could not set socket write timeout: null
12-03 17:21:44.327 21168-21168/? W/AccountChipsFragment: Recording consent failed.
12-03 17:21:44.657 29359-29782/? E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE
12-03 17:21:44.664 812-1072/? W/ActivityManager: getRunningAppProcesses: caller 10145 does not hold REAL_GET_TASKS; limiting output
12-03 17:21:44.697 21168-21168/? W/AutoManageHelper: Unresolved error while connecting client. Stopping auto-manage.
Ele dizia "Você tem uma configuração relacionada ao OAuth2 incorreta", mas eu poderia usar o ID do cliente da Web para solicitar o IdToken na primeira vez.
Isso só me deixa mais confusa.
Eu também achei uma coisa estranha. Se eu instalar o apk que é construído localmente, esse erro nunca aconteceu. Se eu baixar da loja do Google Play, esse erro ocorreu. Mas não há diferença entre esses dois aplicativos, porque eu entrego a google store com o local.