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= 上的配置相同]块。
就我而言,它有效...!!!
我有一个使用 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= 上的配置相同]块。
就我而言,它有效...!!!