每次使用 GoogleSignInApi 显示帐户选择器

Posted

技术标签:

【中文标题】每次使用 GoogleSignInApi 显示帐户选择器【英文标题】:show account chooser every time with GoogleSignInApi 【发布时间】:2016-06-17 10:06:18 【问题描述】:

我正在使用在 play services 8.3 中引入的新 GoogleSignInApi。它会记住最后选择的帐户,并且从第二次起不再显示帐户选择器。但我希望它让用户每次都选择帐户。看起来 GoogleApiClient 的 clearDefaultAccountAndReconnect() 方法不允许与 googleSignInApi 一起使用。有什么方法可以在不实现自定义帐户选择器的情况下实现这一目标?我在玩服务 8.3 和谷歌服务 1.5.0。

【问题讨论】:

尝试调用signOut? developers.google.com/android/reference/com/google/android/gms/… 啊!这行得通。谢谢:D 我收到GoogleApiClient is not connected 错误。我试着先打电话给connect(),但没有用。有什么建议吗?你能举个例子,你是怎么做到的?谢谢 好的,我想通了,在这里贴了一个例子:***.com/questions/35039247/… 【参考方案1】:

帐户选择已缓存,因此您必须先致电signOut。

【讨论】:

mGoogleSignInClient.signOut() 为我工作,请参阅 (developers.google.com/android/reference/com/google/android/gms/…) @szaske 你的答案是正确的。大声笑,最简单但最正确的! 但是如果想在我们的应用程序中重用令牌来切换帐户,这将不起作用。【参考方案2】:

在 GoogleApiClinet 上调用 signOut。

您在哪里调用此代码

Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);

在此之前编写此代码。

Auth.GoogleSignInApi.signOut(mGoogleApiClient);

所以你的新代码看起来很整齐

Auth.GoogleSignInApi.signOut(mGoogleApiClient);
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);

现在它将再次打开弹出窗口

【讨论】:

又短又甜 确保在调用signOut之前连接mGoogleApiClient。否则你会得到java.lang.IllegalStateException: GoogleApiClient is not connected yet 感谢@Rahul 我正在使用 Auth.GoogleSignInApi.signOut(mGoogleApiClient);仅在注销时,但您的最后一个代码调用 Auth.GoogleSignInApi.signOut(mGoogleApiClient);在登录之前欺骗了我 如果我不想退出而只想清除缓存怎么办【参考方案3】:

在 GoogleSignInClient 上调用 revokeAccess

mGoogleSignInClient.revokeAccess();
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RC_SIGN_IN);

它会一次又一次地显示帐户选择弹出窗口,我希望这会正常工作。

【讨论】:

以上是关于每次使用 GoogleSignInApi 显示帐户选择器的主要内容,如果未能解决你的问题,请参考以下文章

每次用户登录时,Google 登录都使用相同的帐户

每次用户登录时,Facebook 登录都使用相同的帐户

每次使用 Rails 3 中的 Devise 登录时,如何检查用户帐户?

如何使用 Terraform 在 GKE 中设置非默认服务帐户?

ios app name想要访问您的 Facebook 帐户,每次都询问

Google 登录 API - 如何使用 PHP 注销某人?