即使在mGoogleApiClient.connect之后,mGoogleApiClient.isConnected也会返回false

时间:2017-05-03 12:58:19

标签: android authentication google-signin android-authenticator

我正在使用谷歌登录进行身份验证。

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();

on 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()。

我做错了什么?

1 个答案:

答案 0 :(得分:-3)

我认为问题是你没有连接google api客户端。每当您使用google api时尝试连接,并在不再使用时断开连接。希望这有帮助。