android - 未经 GET_ACCOUNTS 许可从 GoogleApiClient 获取 Google 帐户 token

标签 android google-plus google-play-services google-signin

这是从 Google+ 登录中使用的 GoogleApiClient 获取 token 的传统方式:

String token = GoogleAuthUtil.getToken(apiClient.getContext(), getAccountNameFromGoogle(apiClient), SCOPE);

但是,GetAccountNameFromGoogle 方法需要 android.permission.GET_ACCOUNTS 权限,在 Android M Developer Preview 3 中,此权限现在被标记为危险并分组到联系人组中。这意味着如果有人想登录我的应用程序,他需要授予我的应用程序完整的联系人权限,这有点矫枉过正。

有没有办法在没有 GET_ACCOUNTS 许可的情况下实现这一点?

我发现的一个可能的答案是从 AccountPicker 获取帐户名,但这会强制用户选择他的帐户两次(一次用于 Google Plus 身份验证,一次用于 AccountPicker),这也不是非常友好的解决方案。

最佳答案

所以这就是我最终解决它的方法:

我完全放弃了 GoogleApiClient 并切换到 AccountPicker .它并不完美,但我仍然可以使用 GoogleApiClient 的所有功能,尽管不是那么轻松。

谷歌的指南:https://developers.google.com/android/guides/http-auth

关于android - 未经 GET_ACCOUNTS 许可从 GoogleApiClient 获取 Google 帐户 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251765/

相关文章:

java - android 调用公共(public)方法并获得成功反馈

php_curl 无法运行 https (Google+ API)

node.js - 无法获取用户信息

perl - 谷歌 oAuth2 未授权_客户端通过 refresh_token

android - 使用 Google Play 服务的 AdMob - 测试广告 - 广告服务器未填充

android - Android手机之间发送短信的简单方法

android - Xamarin.Android OnActivityResult 未在 fragment 内调用

Android - 屏幕方向重新加载 Activity

android - 在 Google API 模拟器 2.0 中更新 Google Play 服务

android - GooglePlayServicesUtil.isGooglePlayServicesAvailable 在三星 Galaxy S6 手机上返回 SERVICE_INVALID