在另一个活动中获取谷歌登录帐户



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

我在login activity中使用了google signin,一切都很好。用户转到another activity,然后转到第三个,然后转到另一个。在fourth activity中,我需要谷歌签名用户(实际上是一种使用谷歌播放服务、成就等的活动(什么是获得签名用户的最佳和更短的方式?我必须重新进行所有登录过程吗?

更新:

如前所述,在我的活动中更新的代码如下:

@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用户。我还需要做什么才能让我的谷歌用户签名?

您可以使用此函数检查用户是否登录。

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,则重新登录用户。仅此而已。

相关内容

  • 没有找到相关文章

最新更新