2017-07-30 6 views
0

J'essaie d'exécuter l'API Web Spotify en utilisant le paquet node-spotify-api npm. Afin d'exiger le paquet je dois utiliser quelque chose appelé browserify, ce qui me permet d'utiliser spécifiquement la fonction "require()" dans le navigateur. J'essaie strictement de lancer l'API du côté client. Quand je fais, c'est l'erreur que je reçois -Compte tenu des nouvelles informations d'authentification de l'API Web Spotify, est-il possible d'exécuter l'API sans serveur?

// I have my client ID and client secret ID delcared in variables 
    // Code below is suppose to execute the search function once the user enters a track 

    var query = $("#query").val().trim(); 
    console.log(query) 
    spotify.search({ type: 'track', query: query }, function(err, data) 
     { 
     if (err) { 
     return console.log('Error occurred: ' + err); 
     } 

    console.log(data); 

    }); 



// Once executed, I get the error below 

Response to preflight request doesn't pass access control check: No 
'Access-Control-Allow-Origin' header is present on the requested 
resource. Origin 'null' is therefore not allowed access. If an opaque 
response serves your needs, set the request's mode to 'no-cors' to 
fetch the resource with CORS disabled. 
bundle.js:120 Error occurred: RequestError: TypeError: Failed to fetch 

Je regardais l'erreur et tout ce que je suis à la recherche me réoriente dans le sens de l'exécution du api sur le côté serveur que je ne veux pas faire si possible. Des réflexions sur la façon d'exécuter strictement ce côté client?

+0

Veuillez nous indiquer la requête Spotify que vous essayez de réaliser. L'erreur spécifique que vous pointez est une erreur d'accès d'origine croisée et signifie que le site auquel vous essayez d'accéder n'autorise pas l'accès d'origine croisée ou que vous ne faites pas la demande correctement pour effectuer une demande d'origine croisée. Nous avons besoin d'en savoir plus sur la demande d'API que vous essayez de faire pour avoir une idée de ce que c'est. – jfriend00

+0

Je me demande si cela [Web API Spotify: OAuth sans Node.js] (https://stackoverflow.com/questions/29073752/spotify-api-web-oauth-without-node-js?rq=1) est Qu'est-ce que vous cherchez. – jfriend00

+0

Juste mis à jour ma question avec l'appel spotify. En ce qui concerne le lien OAuth, j'ai regardé ce même repo et à ma connaissance, cet exemple est opérable du côté serveur. Si possible, je souhaite l'exécuter en tant qu'application frontale et la déployer en tant qu'application frontale. Essentiellement, je me demande si vous pouvez utiliser node.js pour les applications frontales. –

Répondre

0

Je pense que vous décrivez le flux auth appelé Client Credentials et non, cela est impossible parce que Spotify refuse de permettre CORS sur leur point final jeton d'authentification. See this issue on GitHub.

Vous devrez utiliser le Implicit Grant flow pour utiliser entièrement l'API dans le navigateur.

+0

FWIW, je pense qu'il est stupide que Spotify refuse d'activer CORS sur le point de terminaison de jeton d'authentification et n'a pas non plus d'API publique (publique qui ne nécessite pas d'authentification). Ils forcent les gens, qui veulent utiliser publiquement l'API, à supporter des coûts de serveur. – jsejcksn