从保存的 refreshtoken (java) 中恢复 adwords api 的 oauth2 凭据
Posted
技术标签:
【中文标题】从保存的 refreshtoken (java) 中恢复 adwords api 的 oauth2 凭据【英文标题】:restoring oauth2 credentials for the adwords api from saved refreshtoken (java) 【发布时间】:2013-03-27 11:33:39 【问题描述】:我正在编写一个可以访问 Adwords API 的独立应用程序。 oauth2 身份验证和授权工作正常。
我的问题是我想将 refreshtoken 保存在一个文本文件中,并在下次运行应用程序时直接使用它来恢复我的凭据。 refreshtoken 应该有 14 天的有效期,所以恢复访问凭证会很好。
我还没有找到一个有效的例子。有人可以帮忙吗?
【问题讨论】:
问题到底出在哪里?无法检索 refreshtoken 或不知道如何使用它来刷新访问令牌? 我不知道如何使用 refreshtoken 字符串(我可以检索)来创建新的凭据对象并刷新访问令牌。阿尔文 【参考方案1】:refresh token
与授权令牌没有太大区别。
OAuth2.0 有几个流 可用于访问服务器。常见(也是最省钱的)流程是所谓的授权码流程 (detailed info here)。
当用户第一次想要使用您的应用程序时,您的应用程序会向授权服务器请求authorization code
。当用户登录并授予您的应用程序对服务的访问权限时,用户将通过网站获得 authorization code
。您的应用程序将此代码发送到授权服务器,以获取第一个access token
(以及refresh token
)。它是您需要将refresh token
发送到的同一台 服务器。
现在,在您的情况下,我不确切知道服务器的 uri 是什么,但这将是您可以发送服务器的 POST 请求的示例:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=YOUR_CLIENT_ID_HERE&
client_secret=YOUR_CLIENT_SECRET_HERE&
refresh_token=THE_REFRESH_TOKEN_HERE&
grant_type=refresh_token
如果请求有效,服务器将响应一个新的Access Token
。 Here您可以找到有关您可以提出的具体请求的更多信息。
请记住,每个令牌(访问令牌和刷新令牌)都必须保存。 最好的方法是将其加密保存,并且在发送令牌时仅使用 POST 请求和 https。但这不是你的问题。
希望能帮到你。
【讨论】:
以上是关于从保存的 refreshtoken (java) 中恢复 adwords api 的 oauth2 凭据的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 使用 idToken 或 refreshToken 登录
如何在 Java 中使用 refreshtoken 在 Youtube 中上传视频
Cookie、Session、Token、RefreshToken
每个 refreshToken 的 OAuth2 访问令牌限制
GuzzleHttp:如何从 POST 响应中保存 cookie 并在下一个 POST 中使用它?
Alamofire refreshToken with Retrier:如何获取 refreshToken 请求的状态并重新路由到 LoginView