1

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

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

我究竟做错了什么?

4

1 回答 1

-3

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

于 2017-08-04T06:59:11.047 回答