【问题标题】:Getting refresh tokens from Google with OAuth.io使用 OAuth.io 从 Google 获取刷新令牌
【发布时间】:2014-07-08 16:13:32
【问题描述】:

我正在尝试从 OAuth.io 为任何基于 Google 的提供商获取访问令牌,但是每当我进行身份验证时,我都会获得 access_token 但没有 refresh_token。我为 access_type 选择了离线,但仍然没有乐趣。

我已尝试通过文档查找解决方案,但它几乎没有涵盖与刷新令牌相关的任何内容。

【问题讨论】:

    标签: oauth google-oauth oauth.io


    【解决方案1】:

    要从 Google 获取刷新令牌,您需要做两件事:

    • 离线选项 cfhttps://developers.google.com/accounts/docs/OAuth2WebServer

      “可用于获取新访问令牌的令牌。刷新令牌在用户撤销访问之前有效。仅当授权码请求中包含 access_type=offline 时,此字段才存在。”

    • 选项approval_prompt 设置为“强制” cfhttps://developers.google.com/accounts/docs/OAuth2WebServer

      “重要提示:当您的应用程序收到一个刷新令牌时,请务必存储该刷新令牌以备将来使用。如果您的应用程序丢失了刷新令牌,则必须在获取另一个刷新令牌之前重新提示用户同意. 如果需要重新提示用户同意,请在授权码请求中包含approval_prompt参数,并将值设置为强制。”

    所以你的脚本应该看起来像

    OAuth.popup('google', {
       authorize: {
          approval_prompt: 'force'
       }
    }).then(function(google) {
       console.log(google.refresh_token)
       //send the refresh token to your server
    })
    

    如果您在客户端工作(Javascript / iOS / Android / Phonegap),您可能还需要激活以下选项:Send refresh token to front-end 在 OAuth.io 仪表板 > 常规 > 高级选项以允许您的客户端 SDK检索刷新令牌

    https://jsfiddle.net/Lqyc5jpw/

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2014-02-08
      • 2015-03-05
      • 2016-09-16
      • 1970-01-01
      • 2013-06-14
      • 2016-10-13
      • 2015-01-08
      • 2015-11-26
      相关资源
      最近更新 更多