2017-01-30 96 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); 
     } 
    }); 
    }; 

但它返回這個

{ 「error」:{ 「status」:403, 「message」:「此請求需要用戶身份驗證。」 } }

我不知道發生了什麼,我創建了訪問令牌。

回答

0

{「error」:{「status」:403,「message」:「該請求需要用戶 驗證。」 }}

您要發出的請求爲Add a Track to a Playlist,需要連接到用戶的訪問令牌。

您使用的訪問令牌可以來自三種不同的oAuth 2.0流程。其中一個流程即客戶端憑證流程返回匿名訪問令牌。或者更確切地說,訪問簡單地不連接到任何用戶的令牌。詳細瞭解Authorization Guide中的流量。

對於某些端點,使用匿名訪問令牌很好。就像檢索播放列表一樣。但是很多操作(如添加曲目,關注藝術家以及保存曲目)都需要用戶給予您的應用程序明確許可,才能代表他們行事。此權限也稱爲Scopes

因此,您需要的是使用與您現在使用的不同的oAuth 2.0流。哪一個取決於你正在構建什麼類型的應用程序。重要的是您需要用戶批准您的應用程序正在執行的操作。

+0

邁克爾,但在mi應用程序用戶不登錄,所以從來沒有得到用戶的令牌,播放列表是我的需要,如何添加曲目? –

+0

那麼,你需要一個連接到用戶的訪問令牌。該用戶可以是你自己的。您可以將訪問令牌存儲在您的服務中的某個地方,並在需要時使用它。聽起來好像你想查看授權碼流,因爲你可能需要刷新令牌。請閱讀開發者網站上的授權指南,你需要的答案就在那裏。 –

+0

真的謝謝邁克爾 –

相關問題