javascript - 使用 JS SDK 创建新的 Soundcloud 播放列表 ( set ) 返回 422

标签 javascript api soundcloud

我试图让与 Soundcloud 连接的用户能够使用其 SC 帐户创建存储在 Soundcloud 上的新播放列表(集)。非常基本。作为一个测试用例,我正在测试的示例几乎完全取自 Soundcloud dev docs除了我添加了不同的声音 ID。

<script src="http://connect.soundcloud.com/sdk.js"></script>
<script>
// initialize client with app credentials
SC.initialize({
  client_id: 'MY_CLIENT_ID',
  redirect_uri: 'http://localhost.local/~****/sc/callback.html'
});

// initiate auth popup and create new playlist
SC.connect(function() {
    SC.get('/me', function(me) {
        console.log(me.username);
    });

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

SC.post 的副本及其回复如下:

POST https://api.soundcloud.com/playlists 422 (Unknown Error) sdk.js:1
window.SC.SC.Helper.merge._xhrRequest sdk.js:1
window.SC.SC.Helper.merge._request sdk.js:1
window.SC.SC.Helper.merge._apiRequest sdk.js:1
window.SC.SC.Helper.merge.post sdk.js:1

(anonymous function) localhost.local:21
(anonymous function) sdk.js:1
f.onreadystatechange sdk.js:1

XHR finished loading: "https://api.soundcloud.com/playlists". sdk.js:1
window.SC.SC.Helper.merge._xhrRequest sdk.js:1
window.SC.SC.Helper.merge._request sdk.js:1
window.SC.SC.Helper.merge._apiRequest sdk.js:1
window.SC.SC.Helper.merge.post sdk.js:1
(anonymous function) localhost.local:21
(anonymous function) sdk.js:1
f.onreadystatechange sdk.js:1

Uncaught TypeError: object is not a function sdk.js:1
(anonymous function) sdk.js:1
f.onreadystatechange

我尝试了几种不同的解决方案,以及自己创建 url 请求并随其发布我的 client_id,但没有取得任何成功。

我也注意到开发文档中存在不一致之处。我注意到,在开发文档中有一个创建播放列表 JS SDK 示例,但是在 APIGEE ( API ) 控制台中没有引用 post/playlists 请求,只是/playlists 获取...这不是吗甚至存在于当前的 Soundcloud api 中?

我想到的另一件事是,由于这是 422 错误,因此只能在用户最初使用 sdk 上传轨道时才将轨道添加到播放列表吗?

还有其他人遇到过这个问题吗?有没有人找到解决办法?

谢谢

最佳答案

我通过 Cocoa/Objective C 使用 SoundCloud API,并且在尝试更新播放列表时遇到了同样的问题,出现错误 422。我的解决方案是理解参数值必须是轨道“id”字符串的数组,并且参数键是“playlist[tracks][][id]”。

因此,对于 Objective C,代码是:

NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
NSString *trackList = @"60832750,61311756,60832782"; // for example
NSArray *tracks = [self.trackList componentsSeparatedByString:@","];
[parameters setObject:tracks forKey:@"playlist[tracks][][id]"];

当然,您的确切代码将取决于您使用的语言。对我来说,诀窍是让所有括号都正确的 key 。

关于javascript - 使用 JS SDK 创建新的 Soundcloud 播放列表 ( set ) 返回 422,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825716/

相关文章:

javascript - 玩家状态在Beatport与iframe上实现了javascript? soundcloud支持?

javascript - 单击按钮时将两个输入文本值替换为彼此的值

javascript - 类不随vuejs中的变量动态变化

java - REST API URL 模式设计

html - 控制 Soundcloud HTML5 小部件播放器音量

javascript - 如何在 angular2 模块中使用 Soundcloud javascript sdk

javascript - 通过其 src 获取图像的自然宽度

javascript - 一次仅打开一个可折叠列表

java - SimpleDateFormat 和 android.text.format.DateFormat 有什么区别?

java - Wikipedia API - 获取搜索结果的链接