Google oauth 多重重定向 uris 无效

Google oauth multiple redirect uris won't work

我有一个使用 googleapis oauth 的 node.js 应用程序。

我的开发者控制台设置了两个重定向 uris:http://i.imgur.com/qraUa4Y.jpg

我可以使用 redirect_uri 为 /token 或 /update

https://accounts.google.com/o/oauth2/auth 进行初始调用

回调成功后,我尝试用以下代码兑换token:

var exchangeToken = function (params) {
  var post_data = querystring.stringify({
    code: params.code,
    client_id: credentials.client_id,
    client_secret: credentials.client_secret,
    redirect_uri: 'https://www.example.org/token', //this line won't work
    grant_type: 'authorization_code'
  });

  var req = https.request({
    host: 'www.googleapis.com',
    path: '/oauth2/v3/token',
    method: 'POST',
    port: 443,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Content-Length': post_data.length
    }
  }, function(res) {
    res.setEncoding('utf8');
    res.on('data', function (chunk) { 
      console.log('BODY: ' + chunk); 
    }); 
  }); 

  req.write(post_data);
  req.end();

};

如果我将 redirect_uri 设置为 /token 调用失败,返回

BODY: {
 "error": "redirect_uri_mismatch",
 "error_description": "Bad Request"
}

但是如果我更改为 /update 它就可以了。最初的请求接受两个 url,但是这个 url 对于 /token 失败。

怎么了?

仔细检查您之前在授权请求中发送的内容是否与您在请求中发送到令牌端点的内容相匹配。您可以使用您在 API 控制台中配置的任何一个 URL,但它在两个请求中必须相同。

确保 redirect_uri:“https://www.example.org/token”在 Google 客户端 API 上与 'Authorized redirect URIs'[=16= 上的配置相同]块。

就我而言,它有效...!!!