2015-07-12 32 views
13

我正在使用Javascript爲我的投資組合創建一個具有Soundcloud API的Web應用程序。在我目前的階段,我需要能夠創建一個新的集合(又名播放列表)。我用的是示例代碼從SoundCloud的文檔:使用Soundcloud的API創建一個集合

SC.connect(function() { 
    var tracks = [22448500, 21928809].map(function(id) { return { id: id } }); 
    SC.post('/playlists', { 
    playlist: { title: 'My Playlist', tracks: tracks } 
    }); 
}); 

但我發現了一個422錯誤:

Unprocessable Entity - The request looks alright, but one or more of the parameters looks a little screwy. It's possible that you sent data in the wrong format (e.g. an array where we expected a string).

但它並不像任何的遺漏。

+0

也許是因爲21928809不是有效的/公開的軌道,而22448500可以嗎? – CapelliC

+0

你提前認證了用戶? afaik您需要根據文檔使用PUT而不是POST。你可能想看看答案,即使它的PHP:http://stackoverflow.com/questions/29156861/how-to-create-soundcloud-playlist-using-php-wrapper – devbnz

+0

我沒有授權用戶作爲初始化後的第一步。我的代碼的其他部分工作,但目前停留在這一點上。將繼續挖掘。 – brooklynsweb

回答

5

除了播放列表標題和曲目之外,對SoundCloud API的調用還需要一個回調函數。你的代碼應該是這樣的:

SC.connect(function() { 
    var tracks = [22448500, 21928809].map(function(id) { return { id: id } }); 
    SC.post('/playlists', { 
    playlist: { title: 'My Playlist', tracks: tracks }, function(response){ 
     console.log(response) 
    } 
    }); 
}); 

他們的例子很不幸,是錯誤的。

+0

感謝科裏做到了這一招;我知道他們的文檔中有些東西是關閉的。我還想出了我得到的422的來源:我有一個拼寫錯誤,並且從端點路徑「播放列表」中排除了「/」,因此它將解析爲「api.soundcloud.comme ..」或「api」。 soundcloud.complay ...「兩次在一次會議中遇到的錯誤,非常好。 – brooklynsweb