使用OAuth.io JS SDK从客户端获取刷新令牌(客户端)

时间:2015-07-01 06:21:15

标签: javascript google-oauth oauth.io

我正在尝试获取访问令牌&使用OAuth.io为Google提供商刷新令牌。我在OAuth.io中为access_type选择了离线。

以下是代码

   OAuth.popup("google", {'authorize' : { "approval_prompt" : 'force'}})
    .done(function(result) {
        console.log(result);
    })
    .fail(function (err) {
        //handle error with err
        console.log(err);
    });

我没有在响应中收到refresh_token。我只从响应中获得access_token。

访问令牌的JSON响应是:

    {
        "status": "success",
        "data": {
            "access_token": "ya29.pAGQWe3yxxxxxx",
            "token_type": "Bearer",
            "expires_in": 3600,
            "request": {
                "url": "https://www.googleapis.com",
                "headers": {
                    "Authorization": "Bearer {{token}}"
                }
            },
            "id_token": "eyJhbGciOiJSUzIxxxxxxxx"
        },
        "state": "Q9nfocQXJxxxx",
        "provider": "google"
    }

参考

我找到了这个SO链接Getting refresh tokens from Google with OAuth.io 他们在这里解释了如何在服务器端获取刷新令牌。

我想在客户端JS中获取刷新令牌。

3 个答案:

答案 0 :(得分:2)

转到OAuth.io应用常规设置页面,选择显示高级选项,然后选择将刷新令牌发送到前端

在集成的API中,选择 access_type 离线。这将使用以下代码将刷新令牌发送到前端

var oauthOptions = { 'authorize' : { "approval_prompt" : "force" } };
    OAuth.popup("google", oauthOptions)
                .done(function(result) {
                    console.log("Post postProcessing");
                    console.log(result);
                })
                .fail(function (err) {
                    console.log(err);
                });

enter image description here

答案 1 :(得分:0)

尝试将第一行更改为:

OAuth.popup("google", {
  'authorize' : {
    "approval_prompt" : "force",
    "access_type" : "offline"}})

Google's docs描述了离线刷新令牌的工作原理。

答案 2 :(得分:-1)

  1. 转到帐户安全设置,然后点击修改
  2. https://www.google.com/settings/u/1/security
  3. 在“授权应用程序和站点”旁边。然后单击“撤消
  4. 访问“您的应用旁边。您提出的下一个OAuth2请求
  5. 返回refresh_token。
  6. 您还可以使用Open Oauth Here