首页 > 解决方案 > { 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 });
       
    }
});

标签: node.jsauthenticationaxiostokenbearer-token

解决方案


你从哪里得到令牌变量?那是存在于更大范围内的东西,还是你需要传递给你的东西?

查看您提供的 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))

推荐阅读