微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 如何使用刷新令牌刷新google_oauth2访问令牌?

我有一个RoR应用程序,我使用omniauth和google_oauth2对Google进行身份验证,我要求离线访问.

如何使用刷新令牌请求当前访问令牌?此外,如果访问令牌不再有效,我该如何刷新它?我不希望在这种情况下有任何用户界面,当然假设授权尚未被删除.

解决方法

我在google_oauth2中没有看到任何处理带有刷新令牌的新access_token的内容,所以看起来你需要直接进行交换.

Google’s official OAuth 2.0 documentation解释了如何在低级别执行此操作.在服务器端代码中,使用您喜欢的HTTP客户端构建如下所示的请求:

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
refresh_token=REFRESH_TOKEN&
grant_type=refresh_token

其中CLIENT_ID和CLIENT_SECRET与原始身份验证使用的相同,REFRESH_TOKEN是原始身份验证流程中的刷新令牌.如果交换成功,您将在响应中收到一个新的访问令牌,如下所示:

{
  "access_token":"1/fFBGRNJru1FQd44AzqT3Zg","expires_in":3920,"token_type":"Bearer",}

您可以按照此过程在需要时随时获取新的访问令牌.您可以使用expires_in值来估计何时需要新值,或者在API请求以401 HTTP状态响应时尝试刷新.

原文地址:https://www.jb51.cc/ruby/274336.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐