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 我的空闲时间。
在 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 我的空闲时间。