每次使用 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 显示帐户选择器的主要内容,如果未能解决你的问题,请参考以下文章
每次使用 Rails 3 中的 Devise 登录时,如何检查用户帐户?
如何使用 Terraform 在 GKE 中设置非默认服务帐户?