使用OAuth.io从Google获取刷新令牌

时间:2014-05-20 11:54:32

标签: oauth google-oauth oauth.io

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

我已尝试查看文档以获取解决方案,但它几乎不涉及与刷新令牌相关的任何内容。

1 个答案:

答案 0 :(得分:10)

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

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

      

    "可用于获取新访问令牌的令牌。刷新令牌在用户撤消访问权限之前有效。仅当授权代码请求中包含access_type = offline时,才会显示此字段。"

  • 选项approval_prompt设置为" force" cf https://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),您可能还需要激活以下选项:OAuth.io仪表板中的Send refresh token to front-end>一般>高级选项,允许客户端SDK检索刷新令牌

https://jsfiddle.net/Lqyc5jpw/