我读了一些关于它的帖子,但我没有找到正确的方法。所以这里是问题:
我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 用户。我还需要做什么才能让我的谷歌登录用户?