Google SignIn signOut java.lang.IllegalStateException:GoogleAppClient尚未连接

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

只有在此过程中创建了一个全新的Google用户时,才会发生这种情况。
对于现有的谷歌用户来说,它工作得非常好

我的重要注册活动:

@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());
}
});
}
流程:

  • 用户单击SignInRegistrActivity中的Google SignIn按钮
  • 用户选择创建一个新的Google帐户并通过一系列屏幕(Google帐户创建过程)
  • 用户看到权限弹出窗口并单击“允许”
  • 向用户展示另一项活动(我们的条款和条件)-
    startActivityForResult
  • 用户拒绝我们的条款和条件
  • 用户被重定向回SignInRegistrActivity
  • 我的应用程序正试图通过调用上述
    logout()
    函数将用户注销
  • 应用程序因以下stacktrace崩溃:
  • 为什么??GoogleAppClient应已通过步骤6连接。因为我在SignInRegistrActivity的
    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尚未连接谢谢,但这是一个解决办法(我可以很容易地尝试捕捉),但我想了解发生了什么,并正确地做事情