我正在使用谷歌登录进行身份验证。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestProfile()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
每当用户启动应用程序时,我都会检查会话是否仍然可用。
if (isGoogleSignedIn()) {
mGoogleApiClient.connect();
在 onConnected 回调后,我将启动下一个活动。
@Override
public void onConnected(@Nullable Bundle bundle) {
GlobalUtils.googleApiClient = mGoogleApiClient;
launchNextActivity();
}
我在 GlobalUtils 中保存了对 mGoogleApiClient 的引用,以使用户注销实施更容易。以下是我的 logoutUser 方法。
public static void logOutUser() {
// Google logout
if (googleApiClient != null && googleApiClient.isConnected()) {
Auth.GoogleSignInApi.signOut(googleApiClient);
}
googleApiClient = null;
}
但这里的问题是,一旦我离开登录活动,googleApiClient.isConnected() 总是返回 false。我确保在用户进入应用程序主要活动之前始终调用 googleApiClient.connect()。
我究竟做错了什么?