有没有办法在 Android 上使用 Google Play 服务 sdk 请求离线访问?我知道原始 HTTP API https://developers.google.com/android-publisher/authorization可以选择通过请求刷新令牌来执行此操作,但无法找到通过新的方法来执行此操作Google Play 服务 SDK https://developer.android.com/google/play-services/auth.html.
新的 sdk 使用以下方式为应用程序提供访问令牌GoogleAuthUtil.getToken()
方法,但访问令牌每小时过期。我可以发出原始 http 请求并让用户从 Web 视图或浏览器登录,但更喜欢使用 sdk 本地执行此操作的方法,因为这对用户来说是更好的体验。
搜索了近远的谷歌文档,看起来这确实是可能的。谷歌将其称为“跨客户端身份”“混合应用程序” https://developers.google.com/accounts/cookbook/platforms/Hybrid类别。
您显然可以调整传递给范围参数的字符串GoogleAuthUtil.getToken(...)
方法诱使其返回“授权代码”而不是 OAuth2 令牌。 (对于这些之间的区别,我发现这个图表 https://developers.google.com/accounts/docs/OAuth2#installed有帮助。)
详细信息是here https://developers.google.com/accounts/docs/CrossClientAuth,特别是最后一节标题为“Android应用程序获得Web后端的离线访问权限” https://developers.google.com/accounts/docs/CrossClientAuth#offlineAccess.
看来您需要将以下内容作为“范围”字符串传递给 getToken:
oauth2:server:client_id:<your_server_client_id>:api_scope:<scope_url_1> <scope_url_2> ...
然后医生声称:
在这种情况下,GoogleAuthUtil.getToken() 首先要求
用户已授权该项目访问这两个范围。
假设没问题,它将返回的不是 OAuth 令牌,而是
短期授权码,可兑换访问权限
令牌和刷新令牌。
免责声明:我自己还没有尝试过;我们的 Android 开发人员很快就会。请报告这是否适合您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)