Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有多个活动的Google登录流_Android_Google Signin - Fatal编程技术网

Android 具有多个活动的Google登录流

Android 具有多个活动的Google登录流,android,google-signin,Android,Google Signin,我有一个包含3个活动的应用程序:登录活动、主要活动和详细活动 登录活动使用Google登录来获取用户的帐户(令牌id和电子邮件)。 主要活动和详细活动都需要GoogleSignInAccount 我不希望应用程序总是在登录活动时启动,并在用户启动应用程序时透明地重新登录 我不想将令牌id和用户电子邮件存储在共享首选项上,我更愿意在我的应用程序中的任何地方直接操作GoogleSignInAccount 处理此登录场景的正确流程是什么?我是否应该尝试在每个屏幕上都进行一次搜索,或者是否有更好的方法来

我有一个包含3个活动的应用程序:登录活动、主要活动和详细活动

登录活动使用Google登录来获取用户的帐户(令牌id和电子邮件)。 主要活动和详细活动都需要
GoogleSignInAccount

我不希望应用程序总是在登录活动时启动,并在用户启动应用程序时透明地重新登录

我不想将令牌id和用户电子邮件存储在共享首选项上,我更愿意在我的应用程序中的任何地方直接操作
GoogleSignInAccount

处理此登录场景的正确流程是什么?我是否应该尝试在每个屏幕上都进行一次搜索,或者是否有更好的方法来存储和检索
谷歌签名帐户

是的,您可以为此使用

如果您正在UI线程上查找
GoogleSignInAccount
,下面是异步版本:

Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient).setResultCallback(
        new ResultCallback<GoogleSignInResult>() {
            @Override
            public void onResult(@NonNull GoogleSignInResult result) {
                if (googleSignInResult.isSuccess() {
                    GoogleSignInAccount gsa = googleSignInResult.getSignInAccount();     
                }

            }
        });

查看以了解更多详细信息,包括使用Google帐户ID令牌进行后端身份验证或API调用。

您还可以将Google SignInAccount作为额外的意图输入传递:

GoogleSignInAccount acct = result.getSignInAccount();
Intent intent = new Intent(this, AnotherActivity.class);
intent.putExtra("singedInAccount", acct);
startActivity(intent);
并在onCreate()中接收另一个的活动方法,如下所示:

getIntent().getParcelableExtra("singedInAccount");
请注意,就实现而非可序列化接口而言,必须使用getParcelableExtra()而不是getSerializableExtra()

getIntent().getParcelableExtra("singedInAccount");