Spotify API 获取 401 和 400 错误仅支持有效的承载身份验证

Spotify API Fetch 401 and 400 error only valid bearer authentication supported

在 Spotify WebAPI 文档的指导下,我试图通过客户端凭据方法获取请求 user/account 数据。 Spotify Doc。我正在使用嵌套的获取请求。我在第二次获取时收到 400 和 401 响应,抱怨未被授权或

"message": "Only valid bearer authentication supported"

取决于我的获取请求。我遵循了文档,并且我的令牌响应似乎有效我不确定为什么它不会。是的,我尝试了不同的端点,并重置了我的客户端密码。我还包含了代码,在发布之前重置了密钥,code

import React, { Component, useState, useEffect } from 'react';
//Custom IMPORTS: 
import '../PageCss/HeaderSection.css'

const Spotify = () => {

  const [baseUrl, setBaseUrl] = useState("https://accounts.spotify.com/api/token");
  const [spotifyArtists, setSpotifyArtists] = useState("https://api.spotify.com/v1/artist/7bSpQNOg9UsW530DuXM3X5");
  const [token, setToken] = useState([]);
  const [spotifyResonse, setspotifyResonse] = useState([]);
  const [currentStatus, setStatus] = useState(false);
  const [currentStatus2, setStatus2] = useState(false);

  const client_id = '';
  const client_secret = '48bdac084... f8ddb412';
 

  useEffect(() => {
      fetch(baseUrl,
      {
        method: 'POST',
        body: 'grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret,
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
      })
      .then((response) => {

        if (!response.ok) {
          return Promise.reject(new Error("Spotify Token Request Error"));
        }
        else {
          return response.json();
        }
      })
      .catch((err) => {
        console.log("First Fetch " + err);
      })
      .then((json) => {
        try {
          console.log("Current token after first fetch: " + json.access_token);
          console.log(": " + json.token_type);
          console.log(": " + json.expires_in);
          setToken(json.access_token);
          setStatus(true);
          console.log("Fetch 2 Requesting data with token: " + token);
          return fetch(spotifyArtists,{
            method: 'GET',
            headers: {
              'Authorization': `Bearer ${token}` ,
              'Content-Type': 'application/json'
            }})
        }
        catch
        {
          return Promise.reject(new Error(`State Error!: Data: ${token} , Connection:${currentStatus}`));
        }
      })
      .then((response) => {

        if (!response.ok) {
          return Promise.reject(new Error("Spotify Data Request with token Error" + response.status));
        }
        else {
          return response.json();
        }
      })
      .catch((err) => {
        console.log("Second Fetch" + err);
      })
      .then((json) => {
        try {
          console.log("After data request: " + json)
          console.log("Token after request" + token);
          setspotifyResonse(json);
          setStatus2(true);
        }
        catch
        {
          return Promise.reject(new Error(`State Error2 !: Data: ${spotifyResonse} , Connection2:${currentStatus2}`));
        }
      })
      .catch((err) => {
        console.log("After 2nd Fetch Error" + err);
      })

  }, [baseUrl, spotifyArtists]);

  return (
    <div >
    </div>
  )
};
export default Spotify;

有问题的端点

错误日志

我的要求header 是的,密钥与上面的代码不同,我不得不重做很多次。

准确响应

好吧,在 discord 的帮助下发现 spotify API 和网络有不同的艺术家 URLS。一个小字母 's' 是问题所在。获取 /v1/artists/id HTTP/1.1。获得艺术家而不是艺术家。现在一切正常 r.i.p 我的空闲时间。