web-dev-qa-db-fra.com

Comment puis-je obtenir une API Spotify de jeton d'accès?

Je regarde l'api Spotify depuis quelques jours maintenant et un exemple de code source et je n'arrive toujours pas à trouver comment obtenir un jeton d'accès pour accéder aux données de playlist d'un utilisateur. J'en suis arrivé au point où j'ouvre la fenêtre de connexion, l'utilisateur se connecte, puis je reçois un code d'autorisation. À ce stade, j'ai essayé de faire des choses comme:

window.open("https://accounts.spotify.com/api/token?
grant_type=authorization_code&code="+code+"&redirect_uri=myurl&client_id=3137b15
2f1424defa2c6020ae5c6d444&client_secret=mysecret");

et

$.ajax(
    {
      url: "https://accounts.spotify.com/api/token?grant_type=authorization_code&code="+code+"&redirect_uri=myurl&client_secret=mysecret&client_id=myid", 
      success: function(result){
        alert("foo");
      }
    }
);

Mais de toute façon, j'obtiens un résultat comme:

{"error":"server_error","error_description":"Unexpected status: 405"}

au lieu d'un jeton. Je suis sûr que c'est simple mais je suis terrible chez JS. Aidez-moi! Je vous remercie!

(modifier) ​​J'ai oublié de mentionner:

Lien vers le guide d'authentification API: https://developer.spotify.com/web-api/authorization-guide/

Je suis bloqué à l'étape 4. Je vois qu'il existe une méthode alternative pour envoyer un "paramètre d'en-tête" ou une requête cURL qui pourrait fonctionner. Mais comme je n'ai aucune idée de comment faire ces choses, je suis resté avec l'envoi de client_id et client_secret en tant que paramètres de demande de corps comme je l'ai fait auparavant pour le login/code utilisateur.

PS: J'utilise uniquement cette application que j'écris pour moi. Existe-t-il un moyen de coder en dur un jeton sans passer par ce processus à la place?

6
Ashwin Gupta

Une fois le code d'autorisation reçu, vous devrez l'échanger avec un jeton d'accès en effectuant une POST au service des comptes Spotify, cette fois à son/point de terminaison api/token:

Vous devez donc faire une demande POST à l'API Spotify, avec les paramètres dans le corps de la demande:

$.ajax(
  {
    method: "POST",
    url: "https://accounts.spotify.com/api/token",
    data: {
      "grant_type":    "authorization_code",
      "code":          code,
      "redirect_uri":  myurl,
      "client_secret": mysecret,
      "client_id":     myid,
    },
    success: function(result) {
      // handle result...
    },
  }
);

(En tant que note secondaire, "État inattendu: 405" fait référence au code d'état HTTP Méthode 405 non autorisée , qui indique que la méthode de requête que vous avez essayée - une requête GET - n'est pas autorisée sur cette URL.)

6
Frxstrem