在没有GET_ACCOUNTS权限的情况下从GoogleApiClient获取Google帐户令牌

Mat*_*nič 9 android google-login google-plus google-play-services

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

String token = GoogleAuthUtil.getToken(apiClient.getContext(), getAccountNameFromGoogle(apiClient), SCOPE);
Run Code Online (Sandbox Code Playgroud)

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

有没有办法在GET_ACCOUNTS未经许可的情况下实现这一目标

我找到的一个可能的答案是从AccountPicker获取帐户名称,但这迫使用户选择他的帐户两次(一次用于Google Plus身份验证,一次用于AccountPicker),这也不是非常友好的解决方案.

Mat*_*nič 0

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

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

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