node.js - { detail: '未提供身份验证凭据。' }
问题描述
我正在尝试调用 api ("https://wger.de/api/v2/day/") 来获取一些数据,它要求我提供带有标头的令牌以授权我传递相同的内容,但无论何时我尝试拨打电话时出现错误“数据:{详细信息:'未提供身份验证凭据}”
app.get("/workout", async (req, res) => {
try {
const response = await axios({
url: "https://wger.de/api/v2/day/",
method: "get",
headers: {
"content-type": "application/json",
Authorization: 'Bearer ' + token
},
});
res.status(200).json(response.data);
} catch (err) {
console.log(err);
res.status(500).json({ message: err });
}
});
解决方案
你从哪里得到令牌变量?那是存在于更大范围内的东西,还是你需要传递给你的东西?
查看您提供的 api - 看起来您需要以另一种方式传递您的身份验证,并且没有 Bearer 关键字
我会尝试重新格式化它以适应示例,看看是否有效?像这样:
身份验证:“令牌”+令牌
我在工具下找到了这个 - https://wger.de/en/software/api
# In the terminal, e.g. bash
curl -H "Authorization: Token 123456..." \
-H "Accept: application/json; indent=4" \
-X PATCH --data '{"key": value, ...}' \
--dump-header -
https://wger.de/api/v2/....
# In the python console
>>> import requests
>>> import json
>>> from pprint import pprint
>>>
>>> url = 'https://wger.de/api/v2/....'
>>> data = '{"key": "value"}'
>>> headers = {'Accept': 'application/json',
'Authorization': 'Token 12345...'}
>>> r = requests.patch(url=url, data=data, headers=headers)
>>> r
>>> r.content
>>> pprint(json.loads(r.content))
推荐阅读
- python - Python:如何将一个列表的排序(按最大值)应用于另一个列表的元素索引排序
- sql-server-2012 - 从一台服务器批量复制到另一台服务器
- javascript - 无需重启js即可访问php
- google-drive-api - 我可以创建本地测试环境来集成谷歌驱动器和我的网络应用程序吗
- angular - Inject Parent 组件和在 Angular 中使用 @Input() 之间的区别
- azure - 字符串值到日期格式的液体转换
- android - android片段到片段通信:通过接口更新ReceiverFragment的recyclerView
- linux - 当我尝试运行从 Windows 系统编写的 Linux 脚本时出现“没有这样的文件或目录”错误
- powershell - 尝试使用 sendkey
- azure - 我们可以根据位置限制 Azure ARM 模板中的可见性 GUI 元素吗?