Android &引用;GoogleAppClient尚未连接”;在使用Firebase auth和google登录时注销

Android &引用;GoogleAppClient尚未连接”;在使用Firebase auth和google登录时注销,android,firebase,firebase-authentication,google-signin,Android,Firebase,Firebase Authentication,Google Signin,我正在使用Firebase auth与Google登录,但我想从另一个活动注销,但当我使用此方法注销时,它可以从同一个活动完美地工作,但不能与另一个活动一起工作。这里是方法 public void logOut() { mAuth.signOut(); // Google sign out Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(

我正在使用Firebase auth与Google登录,但我想从另一个活动注销,但当我使用此方法注销时,它可以从同一个活动完美地工作,但不能与另一个活动一起工作。这里是方法

public void logOut() {
        mAuth.signOut();
        // Google sign out
        Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(
                new ResultCallback<Status>() {
                    @Override
                    public void onResult(@NonNull Status status) {
                        authorizeUser(null);
                    }
                });
    }
我得到的错误是(logcat)


注册到Google Api客户端的连接回调

使用的类:

    public void logout() {
       mGoogleApiClient.connect();
       mGoogleApiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
        @Override
        public void onConnected(@Nullable Bundle bundle) {

            FirebaseAuth.getInstance().signOut();
            if(mGoogleApiClient.isConnected()) {
                Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {
                    @Override
                    public void onResult(@NonNull Status status) {
                        if (status.isSuccess()) {
                            Log.d(TAG, "User Logged out");
                            Intent intent = new Intent(LogoutActivity.this, LoginActivity.class);
                            startActivity(intent);
                            finish();
                        }
                    }
                });
            }
        }

        @Override
        public void onConnectionSuspended(int i) {
            Log.d(TAG, "Google API Client Connection Suspended");
        }
    });
}
  • LoginActivity类(要登录的活动)
  • LogoutActivity类(要注销的活动)
代码:

    public void logout() {
       mGoogleApiClient.connect();
       mGoogleApiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
        @Override
        public void onConnected(@Nullable Bundle bundle) {

            FirebaseAuth.getInstance().signOut();
            if(mGoogleApiClient.isConnected()) {
                Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() {
                    @Override
                    public void onResult(@NonNull Status status) {
                        if (status.isSuccess()) {
                            Log.d(TAG, "User Logged out");
                            Intent intent = new Intent(LogoutActivity.this, LoginActivity.class);
                            startActivity(intent);
                            finish();
                        }
                    }
                });
            }
        }

        @Override
        public void onConnectionSuspended(int i) {
            Log.d(TAG, "Google API Client Connection Suspended");
        }
    });
}
public void注销(){
mGoogleApiClient.connect();
mgoogleapclient.registerConnectionCallbacks(新的Googleapclient.ConnectionCallbacks(){
@凌驾
未连接的公共无效(@Nullable Bundle){
FirebaseAuth.getInstance().signOut();
if(mgoogleapClient.isConnected()){
Auth.GoogleSignInApi.signOut(mGoogleApiClient.setResultCallback(new-ResultCallback()){
@凌驾
public void onResult(@NonNull状态){
if(status.issucess()){
Log.d(标记“用户注销”);
意向意向=新意向(LogoutActivity.this、LoginActivity.class);
星触觉(意向);
完成();
}
}
});
}
}
@凌驾
公共空间连接暂停(int i){
Log.d(标记“GoogleAPI客户端连接已暂停”);
}
});
}

如果您使用谷歌登录,并从不同的活动中注销,并且遇到此错误,尤其是在注销时,请检查此行,如果您在代码中找到它,请将其删除

                                mGoogleApiClient = GoogleApiClient.Builder(this)
/*this line should be removed*/.enableAutoManage(this , this)
                               .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                               .build()

异常非常明确:您试图在GoogleAppClient尚未初始化时使用它。您是否尝试过中的任何答案?如果您仍然面临问题,请随时发表评论。嘿,我尝试了您的代码。。我在这一行中得到了空指针异常:mGoogleApiClient.connect();我认为您还需要在流程完成后添加unregisterConnectionCallbacks。
                                mGoogleApiClient = GoogleApiClient.Builder(this)
/*this line should be removed*/.enableAutoManage(this , this)
                               .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                               .build()