我一直在尝试使用Node,Express和Request建立一个简单的Oauth2流程,但我一直在令牌请求阶段遇到问题。在我的具体示例中,我使用MailChimp运行Oauth2,但任何平台都存在问题。
在此示例中,在我发布代码以获取令牌后,我收到一条回复,告诉我{ error: 'invalid_request', error_description: 'Invalid grant_type parameter or parameter missing' }
。这让我觉得我没有正确发布数据......我已经确信它是我的逻辑中缺少的一些核心概念。任何建议都表示赞赏。
这就是我正在做的事情:
/* Redirect the user to MailChimp login */
app.get(`/login`, function (req, res) {
res.redirect(url.format({
pathname: 'https://login.mailchimp.com/oauth2/authorize/',
query: {
response_type: 'code',
client_id: client_id,
redirect_uri: 'http://127.0.0.1:3000/auth/'
}
}));
});
/* Recieve the code from MailChimp, and post it back to request a token */
app.get(`/auth`, function (req, res) {
request.post('https://login.mailchimp.com/oauth2/token', {
json: true,
gzip: true,
body: {
grant_type: 'authorization_code',
client_id: client_id,
client_secret: client_secret,
redirect_uri: 'http://127.0.0.1:3000/authed',
code: req.query.code,
},
}, function (err, response, body) {
console.log(response);
});
});
/* Success! We'll do something with the token here... */
app.post('/authed', function(req, res) {
res.send('we did it!')
});