交换authorization_code for access_token和id_token不工作使用Auth0

问题描述:

我使用Auth0 sms无密码登录,我可以正确登录,并且我正确地重定向到我指定的回调url:http://localhost:8000/authenticated?code=AUTHORIZATION_CODE。我一直在关注this教程,但是当我到达第4步和第5步以交换access_token和id_token的authorization_code时,我收到以下错误消息:{"error":"access_denied","error_description":"Unauthorized"}交换authorization_code for access_token和id_token不工作使用Auth0

这是我如何通过POST发送代码到Auth0服务器:

var code = request.query.code; 
var url = `https://${process.env.AUTH0_CLIENT_DOMAIN}/oauth/token?client_id=${process.env.AUTH0_CLIENT_ID}&redirect_uri=http://localhost:8000/authenticated&client_secret=${process.env.AUTH0_CLIENT_SECRET}&code=${code}&grant_type=authorization_code`; 

Wreck.post(url, (err, res, payload) => { 
    console.log(payload.toString()); 
}); 

有没有办法,我从我的查询字符串失去了一些东西?或者在发送这个帖子请求之前我需要做的事情?

我的问题回答了一个问题,在auth0回购:https://github.com/auth0/auth0.js/issues/234

但我转贴这里的答案:

后的有效载荷,而不是将其作为查询字符串PARAMS:

var code = request.query.code; 
var url = `https://${process.env.AUTH0_CLIENT_DOMAIN}/oauth/token`; 
var body = { 
    client_id:process.env.AUTH0_CLIENT_ID, 
    redirect_uri:'http://localhost:8000/authenticated', 
    client_secret:process.env.AUTH0_CLIENT_SECRET, 
    code:code, 
    grant_type:'authorization_code' 
}; 

Wreck.post(url, {payload:body}, (err, res, payload) => { 
    console.log(payload.toString()); 
});