无法获取 google play 授权的刷新令牌
Posted
技术标签:
【中文标题】无法获取 google play 授权的刷新令牌【英文标题】:Cannot get refresh token for google play authorization 【发布时间】:2012-10-14 22:12:32 【问题描述】:我无法获得 Google Play 授权的刷新令牌。
我正在按照 Google Play android 开发者中的说明进行操作 API 授权页面。我创建了一个 OAuth 2.0 客户端 ID。我成功获得了客户 ID。我把所有信息都放在 获取刷新令牌的URI,我发送请求,我被提示 对于“允许访问”。当我单击“允许访问”时,我得到一个无法 连接错误。 这是我的 URI:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/androidpublisher&response_type=code&access_type=offline&redirect_uri=https://localhost/oauth2callback&client_id=345674341799.apps.googleusercontent.com
【问题讨论】:
也许他们在redirect_url中的localhost域有问题 【参考方案1】:当您创建“网络”类型的客户端 ID 并调用 /o/oauth2/auth 服务时,您的用户代理 (/browser) 将尝试重定向 URI。如果它像您示例中的那样是假的(这是默认设置),那么用户代理当然会失败。授权代码仍将是失败 URL 的参数部分,但可能并不明显。
有了授权码之后,您需要使用正确字段的 POST 调用 /o/oauth2/token 服务。我不太愿意将您指向特定的 Google 说明页面,因为它们可能是出了名的不完整、矛盾和过时,但这是对整个过程的合理概述 https://developers.google.com/accounts/docs/OAuth2WebServer。
要记住的一点是,对给定客户端 ID 的第一次成功调用 /o/oauth2/token 将返回难以捉摸的刷新令牌,但除非您重试 /o/oauth2,否则它不会再次返回/auth 服务提供 URL 参数approval_prompt=force。这一点信息是您阅读本文的奖励,并将为您节省数小时的无意义的挫败感。
【讨论】:
【参考方案2】:无法连接错误包含“代码”参数值。该值应该是 用作对https://accounts.google.com/o/oauth2/token的POST请求中的“code”参数值。
【讨论】:
以上是关于无法获取 google play 授权的刷新令牌的主要内容,如果未能解决你的问题,请参考以下文章
获取访问令牌Google Play Android Developer API
如何从 Google Calendar API 获取刷新的令牌
向 Google Play Android Developer API 发出 HTTP 发布请求