tna*_*cho 2 authentication api android oauth
我正处于需要为两个范围(从我的Android应用程序)请求访问令牌的情况,https://www.googleapis.com/auth/userinfo.email
以及https://www.googleapis.com/auth/userinfo.userinfo
我希望在单次调用时获得两个权限getAuthToken
,但无法找出要传递authTokenType
参数的字符串.我尝试了几个合理的组合,没有积极的结果:(
有人解决了这个问题吗?可能吗?
小智 10
我遇到了同样的问题.Shah几乎是正确的,但他的范围字符串是错误的.它应该是
"oauth2:<scope_url> <scope_url>"
Run Code Online (Sandbox Code Playgroud)
不
"oauth2:<scope_url> oauth2:<scope_url>"
Run Code Online (Sandbox Code Playgroud)
如果您需要多个OAuth 2.0范围,请使用以空格分隔的列表.
oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.userinfo
Run Code Online (Sandbox Code Playgroud)
您要求提供示例代码,因此请查看Google文档上传示例应用程序,并在此应用程序中查看此示例Android屏幕中完成的身份验证流程(忽略它是关于Google Docs,它仍然首先授权).您可以获取整个应用程序并在存在Google API的模拟器中运行它,也可以在手机上运行它.授权工作流程从buttonAuthorize click,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
}
Run Code Online (Sandbox Code Playgroud)
用户获取此访问请求屏幕:
请注意,这是使用"本地"OAuth2机制,而不是打开Web浏览器,而是使用首次激活Android手机时提供的身份验证.
另请注意,用户会看到范围的完整网址而不是友好名称,我还没有找到解决方法,如果您确实发现它会很好,如果您可以分享答案.
归档时间: |
|
查看次数: |
4242 次 |
最近记录: |