3

有没有办法在 android 上使用 Google play services sdk 请求离线访问?我知道原始 HTTP api可以通过请求刷新令牌来执行此操作,但找不到通过新的Google Play 服务 sdk来执行此操作的方法。

新的 sdk 使用该GoogleAuthUtil.getToken()方法为应用程序提供访问令牌,但访问令牌每小时到期一次。我可以发出原始 http 请求并让用户从 Web 视图或浏览器登录,但我更喜欢使用 sdk 本地执行此操作的方法,因为这对用户来说是更好的体验。

4

1 回答 1

1

远近搜索 Google 文档,看起来这是可能的。Google 在其“混合应用程序”类别下将此称为“跨客户端身份” 。

您显然可以按摩您传递给GoogleAuthUtil.getToken(...)方法的范围参数的字符串,以诱使它返回“授权代码”而不是 OAuth2 令牌。(对于这些之间的区别,我发现这张图表很有帮助。)

详情在这里,特别是最后一节标题为“Android 应用获取 Web 后端的离线访问”

看来您需要将以下内容作为“范围”字符串传递给 getToken:

oauth2:server:client_id:<your_server_client_id>:api_scope:<scope_url_1> <scope_url_2> ...

然后,该文档声称:

在这种情况下,GoogleAuthUtil.getToken() 将首先要求用户已授权此项目访问这两个范围。假设这没问题,它将返回的不是 OAuth 令牌,而是一个短暂的授权码,可以交换访问令牌和刷新令牌。

免责声明:我自己还没有尝试过;我们的 Android 开发人员很快就会。请报告这是否对您有用。

于 2013-07-12T01:31:22.863 回答