Spotify API 错误 400:“仅支持有效的不记名身份验证”

Posted

技术标签:

【中文标题】Spotify API 错误 400:“仅支持有效的不记名身份验证”【英文标题】:Spotify API error 400: "only valid bearer authentication supported" 【发布时间】:2020-06-11 00:34:27 【问题描述】:

我正在使用 api 尝试通过访问令牌获取我的个人资料数据。我使用了网站中给出的授权示例代码中的给定代码,并且我使用了

        let parsed = queryString.parse(window.location.search);
        let accessToken = parsed.access_token;
        console.log(parsed);
        console.log(accessToken);
        fetch('https://api.spotify.com/v1/me', 
            headers: 'Authorization': 'Bearer' + accessToken,
            json: true
        ).then((res) => res.json())
        .then(data => console.log(data));
    

但即使访问令牌有效,400 错误仍然出现。我什至检查了该特定功能的 try it 方法,并且使用相同的标记,它能够获取数据。对于我在身份验证示例代码中更改的相关信息,我更改了 redirect_uri = "localhost:8888/callback" 然后我也更改了

res.redirect('http://localhost:3000/profile/?' +
          querystring.stringify(
            access_token: access_token,
            refresh_token: refresh_token
          ));
      

转到我的应用程序的个人资料页面。我想知道我是否需要以某种方式授予我的个人资料页面的权限,但我已经将其添加到重定向 url 以防万一。 感谢阅读

【问题讨论】:

【参考方案1】:

“Bearer”和您的令牌之间必须有一个空格。这就是缺少的。

let parsed = queryString.parse(window.location.search);
    let accessToken = parsed.access_token;
    console.log(parsed);
    console.log(accessToken);
    fetch('https://api.spotify.com/v1/me', 
        headers: 'Authorization': 'Bearer ' + accessToken,
        json: true
    ).then((res) => res.json())
    .then(data => console.log(data));

注意我是如何在“Bearer”之后添加一个空格的。

它也出现在 spotify 网站的示例代码中。 https://developer.spotify.com/documentation/general/guides/authorization-guide/ (没有固定链接,只在本页搜索“bearer”)

另外,我建议您使用 模板文字 来定义此类字符串,因为它更容易、更易读,并且可以防止将来出现此类错误。

headers: 'Authorization': `Bearer $accessToken`

您可以在此处阅读更多相关信息: https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Template_literals

【讨论】:

以上是关于Spotify API 错误 400:“仅支持有效的不记名身份验证”的主要内容,如果未能解决你的问题,请参考以下文章

spotify-web-api-node:authorizationCodeGrant() 给出 400 - 错误请求

Spotify API 授权代码流向我返回 400 错误请求

Python - Spotify API 返回错误 400“格式错误的 JSON”

Spotify API 创建播放列表返回 错误: 状态:400,消息:'解析 JSON 时出错。'

spotify-web-api-node:authorizationCodeGrant()给出400 - 错误请求

requests.exceptions.HTTPError:400 客户端错误:对 url 的错误请求:https://accounts.spotify.com/api/token