我最初可以多次使用 Google 帐户登录我的应用程序。
一切安好。
但如果我在一两分钟内签入和签出大约 20 次。
Google 登录失败并重新登录onActivityResult
函数,返回错误代码12501,resultCode = 0;
我使用的手机:Nexus 6,Android 5.1.1
这是我的代码:
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();
}
这是等级:
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'
首先,我使用 FragmentActivity 初始化 GoogleApiClient,然后登录函数启动 Acitvity。 GoogleSignInCallback 是在 onActivityResult 函数中注册的。然后断开客户端连接,因为每次单击登录按钮时,都会调用 init 函数。
我怀疑我使用stopAutoManage()
太早了,但似乎不是真的。
所以我很困惑,哪一部分可能是错误的?
我注意到日志:
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.
它说“您的OAuth2相关配置错误”,但我可以在第一时间使用Web客户端id来请求IdToken。
这只会让我更加困惑。
我还发现了一个奇怪的事情。如果我安装本地构建的apk,则不会发生此错误。如果我从 Google Play 商店下载,就会出现此错误。但这两个apk没有区别,因为我用本地的apk来提供google store。