Android &引用;GoogleAppClient尚未连接”;在使用Firebase auth和google登录时注销
我正在使用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(
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()