1

我读了一些关于它的帖子,但我没有找到正确的方法。所以这里是问题:

google signin在我的中使用过login activity,一切正常。用户转到another activity,然后转到第三个,然后进入另一个。在fourth activity我需要 google 登录用户(实际上是使用 Google Play 服务、成就等的活动)中,获得登录用户的最佳和更短的方法是什么?我是否必须再次进行所有登录过程?

更新:

正如在我的活动中提到的更新代码如下:

@Override
protected void onStart() {
    super.onStart();        
    if (!isSignedIn()) {
        signInSilently();
    }

private boolean isSignedIn() {
    return GoogleSignIn.getLastSignedInAccount(this) != null;
}
private void signInSilently() {
    Log.d(TAG, "signInSilently()");

    mGoogleSignInClient.silentSignIn().addOnCompleteListener(this,
            new OnCompleteListener<GoogleSignInAccount>() {
                @Override
                public void onComplete(@NonNull Task<GoogleSignInAccount> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "signInSilently(): success");
                        onConnected(task.getResult());
                    } else {
                        Log.d(TAG, "signInSilently(): failure", task.getException());
                        onDisconnected();
                    }
                }
            });

因为我不想重新登录(按钮等)。首先,我认为应该连接用户。但即使他断开连接,signInSilently() 也应该再次连接用户。

我的最后一个问题是我得到一个空对象异常:

mLeaderboardsClient.submitScore(getString(R.string.leaderboard_leaderboard),



private void onConnected(GoogleSignInAccount googleSignInAccount) {
    Log.d(TAG, "onConnected(): connected to Google APIs");

    mAchievementsClient = Games.getAchievementsClient(this, googleSignInAccount);
    mLeaderboardsClient = Games.getLeaderboardsClient(this, googleSignInAccount);
    mEventsClient = Games.getEventsClient(this, googleSignInAccount);
    mPlayersClient = Games.getPlayersClient(this, googleSignInAccount);

我可以理解,因为没有 GOOGLE 用户。我还需要做什么才能让我的谷歌登录用户?

4

1 回答 1

2

您可以使用此功能检查用户是否已登录。

private boolean isSignedIn() {
  return GoogleSignIn.getLastSignedInAccount(context) != null;
}

https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignIn

公共静态 GoogleSignInAccount getLastSignedInAccount(上下文上下文)

获取用户登录的最后一个帐户。

返回:上次成功登录的 GoogleSignInAccount。如果用户之前从未登录或已注销/撤销访问权限,则返回 null。

如果它返回 null 只需重新登录用户。就这样。

于 2019-11-02T18:37:38.923 回答