从保存的 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