Node.js 使用basic auth Angular 8 Express js连接到api
我已经建立了一个angular 8应用程序,它连接到一个express API 我正在本地运行它,以进行测试。 我的前端应用程序连接到,后端应用程序连接到 我已经安排了一条快线去接你 这很好,返回所有播客 但是如果我使用debugToken,那么debugToken端点永远不会通过快速路由工作 使用具有基本身份验证客户端ID的邮递员='7faf9a7ad38a01c7d900c'客户端\u密码='a7a3825f02be39c57ff44'可以正常工作,但在通过本地主机连接时永远不会工作 我在用GET 它必须正在连接,因为我返回了一个对象,尽管这是一个错误 在角度上:Node.js 使用basic auth Angular 8 Express js连接到api,node.js,angular,express,Node.js,Angular,Express,我已经建立了一个angular 8应用程序,它连接到一个express API 我正在本地运行它,以进行测试。 我的前端应用程序连接到,后端应用程序连接到 我已经安排了一条快线去接你 这很好,返回所有播客 但是如果我使用debugToken,那么debugToken端点永远不会通过快速路由工作 使用具有基本身份验证客户端ID的邮递员='7faf9a7ad38a01c7d900c'客户端\u密码='a7a3825f02be39c57ff44'可以正常工作,但在通过本地主机连接时永远不会工作 我在用
debug() {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
Authorization: 'Basic ' + btoa('7faf9a7ad38a01c7d900c:a7a3825f02be39c57ff44')
})
};
console.log(httpOptions);
return this.http.get(`${this.configUrl}/debug/`, httpOptions);
}
快递:
router.get('/debug', function (req, res, next) {
var options = {
url: `https://api.podbean.com/v1/oauth/debugToken?access_token=${accessToken}`
}
request(options, function (err, response, body) {
console.log( req.headers);
if(err){
return res.status(500).json({
title: 'An error has occured',
error: err
})
}
res.json(JSON.parse(body));
next();
})
});
在express/node端记录请求头时
{host: 'localhost:3000',
connection: 'keep-alive',
pragma: 'no-cache',
'cache-control': 'no-cache',
'sec-fetch-mode': 'cors',
origin: 'http://localhost:4200',
authorization: 'Basic N2ZhZjlhN2FkMzhhMDFjN2Q5MDBjOmE3YTM4MjVmMDJiZTM5YzU3ZmY0NA==',
'content-type': 'application/json',
accept: 'application/json, text/plain, */*',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
dnt: '1',
'sec-fetch-site': 'same-site',
referer: 'http://localhost:4200/',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-GB,en;q=0.9,en-US;q=0.8,it;q=0.7,es;q=0.6' }
返回的对象:
{"error":"invalid_token","error_description":""}
这说明我正在连接,只是不正确看起来你只是混淆了端点。您正在将基本身份验证从Angular页面发送到Express端点, 这没有多大意义,因为需要授权的是用户,而不是您的Express服务器 尝试将基本身份验证凭据添加到从Express服务器发送到api.podbean.com的请求中
router.get('/debug', function (req, res, next) {
var options = {
url: `https://api.podbean.com/v1/oauth/debugToken?access_token=${accessToken}`,
headers: {
'Authorization': 'Basic ' + new Buffer("7faf9a7ad38a01c7d900c:a7a3825f02be39c57ff44").toString('base64')
}
}
request(options, function (err, response, body) {
...
您尝试过将令牌类型从“基本”切换到“承载”吗?这似乎是您试图与之集成的api的配置问题。感谢您的回复,但是,这不起作用,文档说应该使用基本身份验证,而且,如果我使用postman并直接连接到端点,它也可以起作用谢谢!我已经开始使用var auth='Basic'+Buffer.from(clientId+':'+client_secret.toString('base64'),将我的授权添加到来自express的请求中;req.headers.authorization=auth;但它不起作用,但添加到选项中的headers对象就是它的作用,再次感谢