Javascript 使用从Node.js到SC API的post请求将曲目上载到SoundCloud
这是我关于Stackoverflow的第一个问题,所以让我为任何失礼提前道歉。(我非常感谢大家对我如何改进这个问题的评论。)同时,非常感谢大家的关注 在过去的几天里,我一直试图从Node.js上传一首歌曲到SoundCloud,但没有成功 真正令人沮丧的是,我能够使用SoundCloud JavaScript SDK从前端发出请求。(我从后端发布帖子的唯一原因是,我最终需要能够安排稍后从服务器发出“post”请求) 我开始怀疑是否有可能通过API上传带有POST请求的歌曲。我怀疑这可能只能通过SDK实现,而据我所知,SDK在Node中不可用 首先,在API文档中,它没有将“POST”列为可用的方法。这可以在“/tracks”部分底部的“Subresources”表中找到。(另一方面,我想知道是否可以通过PUT请求上传歌曲。我以为PUT只是为了更新,但在阅读一些AWS文档时,我注意到可以通过客户端的POST请求或服务器的PUT请求将对象上传到S3存储桶。这仍然与SC文档一致,因为他们建议从前端使用带有SDK的POST,但不要将POST列为API中的选项。) 然而,在报告中说: 要上载声音,请向/tracks端点发送POST请求。这 是用我们的一个SDK使用post方法和passing完成的 有关正在上载的曲目的信息 我尝试使用node soundcloud和soundclouder npm包,但没有成功。我能够对用户进行身份验证,并向“/me”路由发出GET请求(我几乎可以肯定,如果不进行身份验证,我不应该这样做) 下面的示例使用节点soundcloud,但soundclouder几乎相同Javascript 使用从Node.js到SC API的post请求将曲目上载到SoundCloud,javascript,node.js,soundcloud,Javascript,Node.js,Soundcloud,这是我关于Stackoverflow的第一个问题,所以让我为任何失礼提前道歉。(我非常感谢大家对我如何改进这个问题的评论。)同时,非常感谢大家的关注 在过去的几天里,我一直试图从Node.js上传一首歌曲到SoundCloud,但没有成功 真正令人沮丧的是,我能够使用SoundCloud JavaScript SDK从前端发出请求。(我从后端发布帖子的唯一原因是,我最终需要能够安排稍后从服务器发出“post”请求) 我开始怀疑是否有可能通过API上传带有POST请求的歌曲。我怀疑这可能只能通过S
SC.init({
id: client_id,
secret: client_secret,
uri: redirect_uri,
accessToken: body.fields.accessToken
});
SC.get('/me/activities', function(err, data){
if ( err ) {
throw err;
} else {
console.log("data", data);
res.end();
}
})
但是,我无法向“/tracks”路线发出“POST”请求
SC.post('/tracks', {
'title': 'test title',
'asset_data': body.file.buffer
}, function(err, data){
console.log("data", data);
res.end();
})
这是回报
{ errors: [ { error_message: '401 - Unauthorized' } ] }
我已经通过他们的GitHub打开了“问题”。(Node soundcloud在解决这一问题方面确实很有帮助。)
我最近的尝试是通过在Postman中构造HTTP请求来模仿成功的前端尝试。即使这样也不行。在《邮递员》一书中,我发现了这个错误:“请求实体包含无效的字节序列。请传输有效的UTF-8。”
当我尝试使用'request'npm库从Node.js发出请求时,我会遇到相同的错误
以下是我从chrome dev tools的网络选项卡中取出的来自前端的成功请求的数据。(意识到您可以从dev工具将请求转换为curl post非常棒!):
最后,我发现了这一点,这似乎表明我可能需要将这首歌“框”成在Soundcloud上制作的“录音”
请让我知道,如果有任何其他信息,将有助于我上传。非常感谢您的帮助
General
Headers
Request URL:https://api.soundcloud.com/tracks?
Request Method:POST
Status Code:201 Created
Remote Address:72.21.91.127:443
Request Headers
POST /tracks? HTTP/1.1
Host: api.soundcloud.com
Connection: keep-alive
Content-Length: 73945
Pragma: no-cache
Cache-Control: no-cache
Origin: http://localhost:1337
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6zA9wPyul1LgLYTW
Accept: */*
Referer: http://localhost:1337/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Request Payload
------WebKitFormBoundary6zA9wPyul1LgLYTW
Content-Disposition: form-data; name="track[asset_data]"; filename="test2.mp3"
Content-Type: audio/mp3
------WebKitFormBoundary6zA9wPyul1LgLYTW
Content-Disposition: form-data; name="track[title]"
6:14
------WebKitFormBoundary6zA9wPyul1LgLYTW
Content-Disposition: form-data; name="format"
json
------WebKitFormBoundary6zA9wPyul1LgLYTW
Content-Disposition: form-data; name="oauth_token"
(THIS IS WHERE THE ACCESS TOKEN GOES)
------WebKitFormBoundary6zA9wPyul1LgLYTW--