【发布时间】:2021-02-16 22:00:46
【问题描述】:
我正在尝试使用 Oauth 2.0 访问 Bexio API。我正在尝试在 node.js 服务器上实现这一点。第一步(获取访问代码)正在工作,我的回调方法已执行。但是,获取访问令牌总是失败。当我发出一个获取访问令牌的发布请求时,我总是收到一个“invalid_client”错误,描述为“在标头或正文中找不到客户端凭据”。
我有一个客户端 ID 和密码,并且我设法使用邮递员获取了访问令牌,所以显然错误在我的代码中。有人建议我需要对请求的正文进行编码(并且在客户端密码中可能有 '=' 之类的内容),但我找不到太多相关信息。
这是我的代码:
let redirect_uri =
process.env.REDIRECT_URI ||
'http://localhost:8888/callback'
app.get('/login', function(req, res) {
res.redirect('https://office.bexio.com/oauth/authorize?' +
querystring.stringify({
response_type: 'code',
client_id: CLIENT_ID,
scope: 'contact_edit monitoring_show',
state: 'abc',
redirect_uri
}))
})
app.get('/callback', async (req, res) => {
const code = req.query.code
axios.post('https://office.bexio.com/oauth/access_token', {
grant_type: 'authorization_code',
code: code,
redirect_uri: redirect_uri,
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET
})
.then(response => {
console.log(response)
})
.catch(error =>{
console.log(error)
})
});
这是http请求:
{ url: 'https://office.bexio.com/oauth/access_token',
method: 'post',
data:
'{"grant_type":"authorization_code",
"code":CODE,
"redirect_uri":"http://localhost:8888/callback",
"client_id":CLIENT_ID,
"client_secret":CLIENT_SECRET}',
headers:
{ Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/json;charset=utf-8',
'User-Agent': 'axios/0.19.0',
'Content-Length': 265 }
我需要一个访问令牌,但我总是收到一个“invalid_client”错误,描述为“在标头或正文中找不到客户端凭据”
【问题讨论】: