2017-01-30 7 views
0

にトラックを追加し、これは私のページでトークンは、私は、共同プレイリストにトラックを追加しようとしたプレイリストSpotifyはAPIウェブ

$credentials = 'client_id:client_secret'; 

$headers = array(
      'Accept: */*', 
      'Content-Type: application/x-www-form-urlencoded', 
      'User-Agent: runscope/0.1', 
      'Authorization: Basic '.base64_encode($credentials)); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://accounts.spotify.com/api/token'); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,'grant_type=client_credentials'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
$response = json_decode($response, true); 
echo $token = $response['access_token']; 
curl_close($ch); 

アクセスのための私のコードである私は、協調を作成したので、ユーザーがログインしていませんプレイリスト

、これが私のadd playlist機能

var addplaylist = function (id,token) { 

     $.ajax({ 
     dataType: 'text', 
     type: 'post', 
     url: 'https://api.spotify.com/v1/users/entelperú/playlists/6sU8XOS7BLicR3COsc0Rhp/tracks?uris=spotify:track:'+ id, 
     headers: { 
      Authorization: "Bearer "+token, 
     },success: function (response) { 
      alert(response); 
     } 
    }); 
    }; 

ですが、それはこの

返します

{ "エラー":{ "ステータス":403、 "メッセージ": "この要求にはユーザー認証が必要です。" }}

私がアクセストークンを作成しました、何が起こったのかわかりません。

答えて

0

{"エラー":{"ステータス":403、 "メッセージ": "このリクエストにはユーザー の認証が必要です。" }}

あなたが行っているリクエストは、Add a Track to a Playlistです。ユーザーに接続されているアクセストークンが必要です。

使用しているアクセストークンは、3つの異なるoAuth 2.0フローから取得できます。これらのフローの1つであるClient Credentialsフローは、匿名アクセストークンを返します。または、単に、どのユーザーにも接続されていないトークンにアクセスします。 Authorization Guideのフローについて詳しくは、こちらをご覧ください。

一部のエンドポイントでは、匿名アクセストークンを使用しても問題ありません。プレイリストを取得する。しかし、トラックを追加する、アーティストに従う、トラックを保存するなどの多くのアクションでは、ユーザーがアプリケーションに代わって行動する明示的な許可をアプリケーションに与える必要があります。この許可はScopesとも呼ばれます。

したがって、今使用しているものとは異なるoAuth 2.0フローを使用する必要があります。どれがあなたが構築しているアプリケーションのタイプに依存するか。重要なことは、アプリケーションが実行しているアクションを承認するユーザーが必要なことです。

+0

マイケルだけど、ユーザーがログオンしていないので、ユーザーのトークンを取得することはありません。プレイリストは私が必要です。どのようにトラックを追加できますか? –

+0

まあ、ユーザーに接続されているアクセストークンが必要です。そのユーザーは自分のものにすることができます。アクセストークンはサービスのどこかに格納し、必要に応じて使用することができます。あなたがリフレッシュトークンを必要とする可能性があるので、認証コードフローを見たいと思うように聞こえます。デベロッパーサイトのAuthorization Guideを読んで、必要な回答があればそれをご覧ください。 –

+0

マイケルに本当に感謝 –

関連する問題