Google SignIn signOut java.lang.IllegalStateException:GoogleAppClient尚未连接
只有在此过程中创建了一个全新的Google用户时,才会发生这种情况。Google SignIn signOut java.lang.IllegalStateException:GoogleAppClient尚未连接,java,android,google-signin,google-api-client,Java,Android,Google Signin,Google Api Client,只有在此过程中创建了一个全新的Google用户时,才会发生这种情况。 对于现有的谷歌用户来说,它工作得非常好 我的重要注册活动: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GoogleSignInOptions.Builder gsoBuilder = new GoogleSignInOptions.B
对于现有的谷歌用户来说,它工作得非常好 我的重要注册活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleSignInOptions.Builder gsoBuilder = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN);
GoogleSignInOptions gso = gsoBuilder.requestEmail()
.requestServerAuthCode(BuildConfig.GOOGLE_SIGNIN_WEB_ID)
.requestScopes(new Scope(Scopes.PROFILE), new Scope(Scopes.EMAIL), new Scope("https://www.googleapis" +
".com/auth/user.birthday.read"))
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(@Nullable Bundle bundle) {
Logger.i("onConnected");
}
@Override
public void onConnectionSuspended(int i) {
Logger.i("onConnectionSuspended %d", i);
}
})
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
}
...
private void logout() {
Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
Logger.i("onResult - %d - %s", status.getStatusCode(), status.getStatusMessage());
}
});
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
GoogleSignInOptions.Builder gsoBuilder=新的GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT\u登录);
GoogleSignionOptions gso=gsoBuilder.requestEmail()
.requestServerAuthCode(BuildConfig.GOOGLE\u sign\u WEB\u ID)
.requestScopes(新范围(Scopes.PROFILE)、新范围(Scopes.EMAIL)、新范围(“https://www.googleapis" +
“.com/auth/user.birth.read”))
.build();
mgoogleapclient=新的Googleapclient.Builder(此)
.addConnectionCallbacks(新的GoogleAppClient.ConnectionCallbacks(){
@凌驾
未连接的公共无效(@Nullable Bundle){
Logger.i(“未连接”);
}
@凌驾
公共空间连接暂停(int i){
Logger.i(“onConnectionSuspended%d”,i);
}
})
.enableAutoManage(这个,这个)
.addApi(Auth.GOOGLE\u SIGN\u IN\u API,gso)
.build();
}
...
私有void注销(){
Auth.GoogleSignInApi.signOut(mgoogleapclient.setResultCallback)(
新的ResultCallback(){
@凌驾
公共void onResult(状态){
Logger.i(“onResult-%d-%s”,status.getStatusCode(),status.getStatusMessage());
}
});
}
流程:
startActivityForResult
logout()
函数将用户注销onCreate()中调用了它
是否因为GoogleAppClient的断开连接是在活动的onStop()
中隐式调用的
E/U记录器:│ Activity.dispatchActivityResult
(Activity.java:7137)E/PRETTY_记录器:│
SignInRegisterActivity.onActivityResult
(SignenRegistrActivity.java:239)E/PRETTY\u记录器:
├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
E/U记录器:│ : java.lang.IllegalStateException:GoogleAppClient
尚未连接。E/U记录器:│ 在
com.google.android.gms.internal.zzaas.zzb(未知来源)
E/U记录器:│ 在
com.google.android.gms.internal.zzaav.zzb(未知来源)
E/U记录器:│ 在
com.google.android.gms.internal.zzaat.zzb(未知来源)
E/U记录器:│ 在
com.google.android.gms.auth.api.signin.internal.zze.zza(未知
来源)E/U记录器:│ 在
com.google.android.gms.auth.api.signin.internal.zzc.signOut(未知
来源)E/U记录器:│ 在
com.sephora.digital.views.activities.SignInRegisterActivity.logout(SignInRegisterActivity.java:253)
E/U记录器:│ 在
com.sephora.digital.views.activities.SignInRegisterActivity.onActivityResult(SignInRegisterActivity.java:239)
E/U记录器:│ 在
android.app.Activity.dispatchActivityResult(Activity.java:7137)
E/U记录器:│ 在
android.app.ActivityThread.deliverResults(ActivityThread.java:4916)
E/U记录器:│ 在
android.app.ActivityThread.handleSendResult(ActivityThread.java:4963)
E/U记录器:│ 在
access$1600(ActivityThread.java:221)
E/U记录器:│ 在
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1848)
E/U记录器:│ 在
android.os.Handler.dispatchMessage(Handler.java:102)E/PRETTY\u记录器:
│ 在android.os.Looper.loop(Looper.java:158)E/PRETTY_记录器:│ 在
main(ActivityThread.java:7224)
E/U记录器:│ 位于java.lang.reflect.Method.invoke(本机方法)
E/U记录器:│ 在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
E/U记录器:│ 在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
注销时检查GoogleapClient.isConnected?为什么我必须进行这样的检查?因为堆栈跟踪显示,GoogleapClient尚未连接代码>谢谢,但这是一个解决办法(我可以很容易地尝试捕获),但我想了解发生了什么,并在注销检查GoogleapClient时正确处理。是否连接?为什么我必须进行这样的检查?因为堆栈跟踪显示,GoogleapClient尚未连接代码>谢谢,但这是一个解决办法(我可以很容易地尝试捕捉),但我想了解发生了什么,并正确地做事情