मैं अनुयायियों की संख्या प्राप्त करने के लिए एक सार्वजनिक Spotify प्लेलिस्ट के लिए एक अनुरोध प्राप्त करने का प्रयास कर रहा हूं, और फिर इसे एक div के आंतरिक HTML में इंजेक्ट कर रहा हूं। इतना ही आसान।

मैं सामान्य रूप से एपीआई और जेएस के लिए थोड़ा नया हूं, इसलिए सोचा कि मैं पूछूंगा कि क्या कोई यह देखना चाहता है कि मैं यहां क्या गलत कर रहा हूं।

जेएस कोड ऐसा दिखता है:

const updateSpotify = (function() {

const clientId = 'aa81a434672045ccb5c9b40029359183';
const clientSecret = '456aea5802484cc5b83e35e05a40c623';

const _getToken = async () => {

    const result = await fetch('https://accounts.spotify.com/api/token', {
        method: 'POST',
        headers: {
            'Content-Type' : 'application/x-www-form-urlencoded', 
            'Authorization' : 'Basic ' + btoa(clientId + ':' + clientSecret)
        },
        body: 'grant_type=client_credentials'
    });

    const data = await result.json();
    return data.access_token;
}

const _getPlaylist = async (token) => {

    const result = await fetch(`https://api.spotify.com/v1/playlists/1Vt3ahELCdZ6tEAYUy8mNy`, {
        method: 'GET',
        headers: { 'Authorization' : 'Bearer ' + token}
    });

    const data = await result.json();
    document.getElementById("followers").innerHTML = data.followers.total;
    document.getElementById("cover-image").src = data.images.total;
    return data;
}

_getPlaylist(_getToken()); });

एचटीएमएल पेज पर, मैं इस तरह लोड पर फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं:

<body class="overview" onload="updateSpotify();">

लेकिन डेवलपर टूल मुझे 400 त्रुटि देता है। Spotify से:

400 खराब अनुरोध - विकृत सिंटैक्स के कारण सर्वर द्वारा अनुरोध को समझा नहीं जा सका। संदेश के मुख्य भाग में अधिक जानकारी होगी; प्रतिक्रिया स्कीमा देखें।


क्या कोई देख सकता है कि यहाँ क्या गलत हो रहा है?

0
Thomas Christensen 27 सितंबर 2020, 14:09

1 उत्तर

सबसे बढ़िया उत्तर

इसे curl के साथ आज़माएं और देखें कि क्या यह काम करता है:

curl -X GET "https://api.spotify.com/v1/playlists/1Vt3ahELCdZ6tEAYUy8mNy" -H "Authorization: Bearer {your access token}"

मुझे लगता है कि आपके कोड में समस्या यह है कि _getToken(), token मान के बजाय Promise लौटा रहा है। _getPlaylist को इस तरह कॉल करके देखें:

_getToken().then(function(token) {
  _getPlaylist(token);
})
1
Mo_- 27 सितंबर 2020, 12:46