android-具有多个活动的Google登录流程
作者:互联网
我有一个包含3个活动的应用程序:登录活动,主要活动和详细活动.
登录活动使用Google登录来获取用户的帐户(令牌ID和电子邮件).
Main活动和Detail活动都需要GoogleSignInAccount.
我不想让该应用程序始终在登录活动时启动,并在用户重新启动该应用程序时透明地重新登录.
我不想将令牌ID和用户电子邮件存储在共享的首选项中,我希望直接在我的应用中的任何地方直接操作aGoogleSignInAccount.
处理此签到方案的正确流程是什么?我应该在每个屏幕上尝试执行silentSignIn
还是有更好的方法来存储和检索GoogleSignInAccount?
解决方法:
是的,您可以为此使用silentSignIn.
如果您正在UI线程上寻找GoogleSignInAccount,则下面是异步版本:
Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient).setResultCallback(
new ResultCallback<GoogleSignInResult>() {
@Override
public void onResult(@NonNull GoogleSignInResult result) {
if (googleSignInResult.isSuccess() {
GoogleSignInAccount gsa = googleSignInResult.getSignInAccount();
}
}
});
注意:如果您的mGoogleApiClient不是使用enableAutoManage构建的,则必须手动调用mGoogleApiClient.connect()和mGoogleApiClient.disconnect()才能使上述代码示例正常工作.有关更多详细信息,请参见有关managing the GoogleApiClient connection lifecycle的更多信息.
或者在非UI线程上,您可以使用以下示例代码:
try {
ConnectionResult result = mGoogleApiClient.blockingConnect();
if (result.isSuccess()) {
GoogleSignInResult googleSignInResult =
Auth.GoogleSignInApi.silentSignIn(googleApiClient).await();
if (googleSignInResult.isSuccess() {
GoogleSignInAccount gsa = googleSignInResult.getSignInAccount();
}
}
} finally {
mGoogleApiClient.disconnect();
}
请查看documentation了解更多详细信息,包括使用Google帐户ID令牌进行后端身份验证或API调用.
标签:google-signin,android 来源: https://codeday.me/bug/20191118/2031658.html