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

Getting refresh tokens from Google with OAuth.io JS SDK (Client side)

我正在尝试使用 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"
    }

参考

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

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

  1. 转到帐户安全设置并单击编辑
  2. https://www.google.com/settings/u/1/security.
  3. 在 "Authorizing applications and sites" 旁边。然后点击“撤销
  4. 访问”在您的应用程序旁边。您发出的下一个 OAuth2 请求将
  5. return一个refresh_token.

您还可以使用 Open Oauth Here

尝试将第一行更改为:

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

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

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

在集成 API 中,select 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);
                });