ruby-on-rails - 如何使用我的刷新 token 刷新我的 google_oauth2 访问 token ?

标签 ruby-on-rails google-api oauth-2.0 omniauth

我有一个 RoR 应用程序,我在其中使用 omniauth 和 google_oauth2 对 Google 进行身份验证,我请求离线访问。

如何使用刷新 token 请求当前访问 token ?另外,当我的访问 token 不再有效时如何刷新它?我不想在这种情况下有任何用户界面,当然假设授权没有被取消。

最佳答案

我在 google_oauth2 中没有看到任何内容处理获取新的 access_token带有刷新 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_IDCLIENT_SECRET与您用于原始身份验证和 REFRESH_TOKEN 的相同是来自原始身份验证流程的刷新 token 。如果交换成功,您将在响应中收到一个新的访问 token ,如下所示:
{
  "access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
}

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

关于ruby-on-rails - 如何使用我的刷新 token 刷新我的 google_oauth2 访问 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792326/

相关文章:

google-analytics - Google Analytics API 自动登录

node.js - 使用 GMail SMTP OAuth2 身份验证的 Nodemailer 正在获取 'Invalid status code 401'

oauth-2.0 - Open Id/OAuth2.0注销中的PostLogoutRedirectUri有什么意义?

google-api - 有 Google Keep API 吗?

javascript - 无法访问 json 对象属性并且值在 Rails View 中显示为未定义

ruby-on-rails - Capistrano 版本冲突

ruby-on-rails - RVM、Rails 错误

google-api - 谷歌 QPX API key

authentication - 使用 OAUTH 2.0 调用 WCF Restful 方法

ruby-on-rails - rails 错误: undefined method ` ' for nil:NilClass