其他分享
首页 > 其他分享> > android-具有多个活动的Google登录流程

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