web-dev-qa-db-ja.com

アクセストークンSpotify APIを取得するにはどうすればよいですか?

私はここ数日、Spotify APIとソースコードの例を見てきましたが、ユーザーのプレイリストデータにアクセスするためのアクセストークンを取得する方法がまだわかりません。ログインウィンドウを表示し、ユーザーがログインして、認証コードを受け取るまでになりました。この時点で、私は次のようなことを試みました:

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

および

$.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");
      }
    }
);

しかし、どちらの方法でも次のような結果が得られます。

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

トークンの代わりに。これは簡単だと思いますが、JSでひどいです。助けてください!ありがとうございました!

(編集)言及するのを忘れていました:

API認証ガイドへのリンク: https://developer.spotify.com/web-api/authorization-guide/

ステップ4で立ち往生しています。「ヘッダーパラメータ」またはcURLリクエストを送信する別の方法があり、機能する場合があります。しかし、これらのことを行う方法がわからないので、ユーザーのログイン/コードに対して以前に行ったように、client_idとclient_secretをボディリクエストパラメーターとして送信することにこだわっています。

PS:自分が書いているこのアプリケーションのみを使用しています。代わりにこのプロセスを実行せずにトークンをハードコーディングできる方法はありますか?

6
Ashwin Gupta

認証コードを受け取ったら、それをアクセストークンと交換する必要がありますPOSTリクエストを実行することで)、Spotifyアカウントサービスに、今回は/ api/tokenエンドポイント:

したがって、リクエスト本文にパラメータを指定して、Spotify APIにPOSTリクエストを送信する必要があります。

$.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...
    },
  }
);

(補足として、 "予期しないステータス:405"はHTTPステータスコードを指します405許可されていないメソッドは、試行したリクエストメソッド(GETリクエスト)がそのURLでは許可されていないことを示します。)

6
Frxstrem