我正在努力将Google+登录整合到应用中,而我现在大部分都在使用它。按照这里的说明:
https://developers.google.com/+/mobile/android/sign-in
我可以添加“使用Google登录”按钮,整合Play服务中的GoogleApiClient
,并允许用户登录自己选择的Google帐户。
但是,为了遵守Google服务条款,我还希望为他们提供一种方式(在不同的活动中),以完全断开他们的Google+帐户与应用的关联。根据Google的文档:
使用已连接的Plus.AccountApi.revokeAccessAndDisconnect()
调用GoogleApiClient
这是一件简单的事情。问题是,这要求我首先连接GoogleApiClient
。
第一个链接概述了获取此类对象的过程:使用GoogleApiClient.Builder
构建客户端对象,在其上调用connect()
,并使用适当的回调来检测连接成功或失败。但是,如果用户手机上有多个Google帐户,那么connect()
会导致立即失败,要求我调用解析意图,这会弹出一个对话框,要求他们选择要使用的帐户。< / p>
但这不适用于此案例,因为他们已经登录Google+,因此我应该知道要使用哪个帐户。请记住,此时,我需要做的就是创建一个GoogleApiClient
对象,该对象已登录到之前登录的帐户,因此我可以将其传递给Plus.AccountApi.revokeAccessAndDisconnect()
。但我不知道该怎么做。
我查看了文档并搜索了我能想到的每一个单词组合来解释这个问题,但到目前为止我一无所获。是否有任何方法可以使用特定帐户实例化GoogleApiClient
,而不是要求用户从现有帐户列表中进行选择?或者,如果没有,是否有一些信息保存到偏好设置,我可以访问这些信息以获取他们已在我的应用中授权的帐户的令牌?
答案 0 :(得分:8)
当然,我发布这篇文章后,我偶然发现了答案。
对于任何好奇的人,请按照以下步骤操作:您只需向GoogleApiClient构建器添加一个步骤;调用setAccountName()
方法来指定要为其构建api客户端对象的帐户。所以这个:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.build();
成为这个:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.setAccountName(<gmail address>)
.build();
然后它有效。