Saya sedang membuat apl dalam React menggunakan Spotify API.
Pertama, saya mendapat token akses menggunakan clientID dan clientSecret saya. Kemudian saya cuba mendapatkan ID pengguna menggunakan token ini. Dokumentasi menyebut bahawa anda perlu membuat permintaan dapatkan dan lulus token sebagai pengepala.
Masalahnya, saya sentiasa mendapat kod ralat 401 sebagai tindak balas. Dokumentasi menyebut bahawa ralat ini mungkin disebabkan token telah tamat tempoh. Tetapi dalam kod saya, saya cuba mendapatkan ID pengguna serta-merta selepas mendapat token.
Soalan kedua saya ialah tentang membuat permintaan dalam React. Seperti yang anda lihat, saya menggunakan cangkuk useEffect untuk mencapai ini, tetapi saya tidak pasti sama ada ini pendekatan yang betul. Juga, cara saya melakukan permintaan kedua tidak sesuai (jika pernyataan di dalam useEffect).
Sebarang bantuan amat dihargai!
P.S. apiKey dan apiSecret ialah pembolehubah global, permintaan pertama berfungsi dengan baik, ia mengembalikan token yang sah, yang berjaya digunakan untuk membuat permintaan mendapatkan lain untuk mencari lagu.
const [token, setToken] = useState(""); const [userID, setUserID] = useState(""); // Obtain access token and user ID useEffect(() => { // Get access token const parameters = { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: `grant_type=client_credentials&client_id=${apiKey}&client_secret=${apiSecret}`, }; fetch("https://accounts.spotify.com/api/token", parameters) .then((response) => { return response.json(); }) .then((data) => { setToken(data.access_token); return data.access_token; }); }, []); // Obtain user ID once token is obtained useEffect(() => { if (token != "") { const parameters = { method: "GET", headers: { Authorization: `Bearer ${token}`, }, }; fetch("https://api.spotify.com/v1/me", parameters) .then((response) => { return response.json(); }) .then((data) => { console.log(data); }); } }, [token]);
Nampaknya kod anda berada di landasan yang betul, tetapi masalahnya mungkin berkaitan dengan cara token dikendalikan dan apabila permintaan kedua untuk ID pengguna dibuat. Juga, tidak perlu menggunakan dua
useEffect
cangkuk.