我处于需要为两个范围(来自我的 android 应用程序)请求访问令牌的情况,https://www.googleapis.com/auth/userinfo.email
并且https://www.googleapis.com/auth/userinfo.userinfo
我想在一次调用时获得这两种权限getAuthToken
,但无法确定要传入authTokenType
参数的字符串。我尝试了几种合理的组合但没有积极的结果:(
有没有人解决过这个问题?是否可以?
我处于需要为两个范围(来自我的 android 应用程序)请求访问令牌的情况,https://www.googleapis.com/auth/userinfo.email
并且https://www.googleapis.com/auth/userinfo.userinfo
我想在一次调用时获得这两种权限getAuthToken
,但无法确定要传入authTokenType
参数的字符串。我尝试了几种合理的组合但没有积极的结果:(
有没有人解决过这个问题?是否可以?
我遇到了同样的问题。Shah 几乎是对的,但他的范围字符串是错误的。它应该是
"oauth2:<scope_url> <scope_url>"
不是
"oauth2:<scope_url> oauth2:<scope_url>"
如果您需要多个 OAuth 2.0 范围,请使用空格分隔的列表。
oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.userinfo
您要求提供示例代码,因此请查看Google Docs Upload Sample应用程序,并在此应用程序中查看在此示例 Android 屏幕中完成的身份验证流程(忽略它是关于 Google Docs 的,它仍然首先授权)。您可以获取整个应用程序并在具有 Google API 的模拟器中运行它,或者在您的手机上运行它。授权工作流程从 buttonAuthorize 单击开始,Authorize() 并且您对此方法特别感兴趣:
private void gotAccount(Account account)
{
Bundle options = new Bundle();
accountManager.getAuthToken(
account, // Account retrieved using getAccountsByType()
"oauth2:https://www.googleapis.com/auth/userinfo.email oauth2:https://www.googleapis.com/auth/userinfo.userinfo", // Auth scope
//"writely", // Auth scope, doesn't work :(
options, // Authenticator-specific options
this, // Your activity
new OnTokenAcquired(), // Callback called when a token is successfully acquired
null); // Callback called if an error occurs
}
用户获取此访问请求屏幕:
请注意,这是使用“本地”OAuth2 机制,而不是打开 Web 浏览器,而是使用您首次激活 Android 手机时提供的身份验证。
另请注意,用户看到的是范围的完整 URL 而不是友好名称,我还没有找到解决此问题的方法,如果您发现如果您能分享答案会很棒。