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