【问题标题】:How to preserve & re-submit request while doing an OAuth2 token refresh?如何在进行 OAuth2 令牌刷新时保留并重新提交请求?
【发布时间】:2013-07-25 17:08:59
【问题描述】:

我正在用 Rails 编写一个 Google 日历应用程序。 OAuth2 访问令牌在 1 小时后过期。我的问题是,如果有人填写了我想推送到 Google 日历的表格,而他们在填写表格时访问令牌过期并且他们必须通过整个重新身份验证过程,我不知道如何保存整个请求(表单提交)并在我的令牌刷新后重新提交。

我知道可以使用数据库,保存参数、路径、请求方法等等......但我想做的是将所有内容保存在某种会话变量中,并让它自动重新- 一旦 Google OAuth 访问令牌有效,再次向我的应用提交整个请求。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    这可以通过获取refresh_token 来解决,您可以通过它获取新的access_token。您可以通过在用户首次授权您的应用时询问offline access 来做到这一点。

    您还可以使用 Google 提供的 Ruby client library 来更轻松地管理 OAuth2 流程。

    【讨论】:

      【解决方案2】:

      您还可以在当前会话中保存表单状态,假设您有一个,然后立即执行流程以获取新的访问令牌。查看 prompt=none 参数: https://developers.google.com/accounts/docs/OAuth2Login#authenticationuriparameters

      仅当用户与 Google 进行了有效会话时,即时流程才会成功。如果不是这种情况,那么您必须让用户在正常流程中重新进行身份验证。

      或者,按照 Arun 的建议,使用刷新令牌。但是使用刷新令牌,您肯定必须运行自己的会话并保留用户数据库(您必须存储刷新令牌)。您自己的会话也可能在表单提交之前过期。

      【讨论】:

        猜你喜欢
        • 2017-05-29
        • 2016-04-15
        • 2016-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-05
        • 2017-04-20
        • 1970-01-01
        相关资源
        最近更新 更多