10

我正在尝试使用 Google 提供商的 OAuth.io 获取访问令牌和刷新令牌。我为 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 中获取刷新令牌。

4

3 回答 3

2

转到 OAuth.io 应用程序常规设置页面,选择Show advanced options然后选择Send refresh token to front-end

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

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);
                });

在此处输入图像描述

于 2015-08-10T10:26:47.067 回答
0

尝试将第一行更改为:

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

Google 的文档描述了离线刷新令牌的工作原理。

于 2015-07-07T13:31:06.600 回答
-1
  1. 转到帐户安全设置并单击编辑
  2. https://www.google.com/settings/u/1/security
  3. 在“授权应用程序和站点”旁边。然后点击“撤销
  4. 访问”在您的应用旁边。您发出的下一个 OAuth2 请求将
  5. 返回一个 refresh_token。

你也可以在这里玩 Open Oauth

于 2015-07-03T07:53:42.527 回答