我的私人跟踪有问题。我的soundcloud帐户中有公共轨道和私有轨道。当一个轨道是公共的是纠正,但当我是私人轨道时,api返回404错误: 在我的控制台中获取http://api.soundcloud.com/tracks/123?client_id=xxxxx&format=json&_status_code_map[302]=200 404(未找到)。
这是我演奏曲目的功能:
// Play a Single track
$('#app').on('click','.play_btn_single',function(event){
event.preventDefault();
var el = $(this);
var id = el.attr('id');
SC.stream('/tracks/'+id,function(sound){
sound.play();
});
});
谢谢你的帮助。
答案 0 :(得分:2)
如果您希望播放非公开帐户的声音,则需要提供身份验证令牌。来自SoundCloud的API指南:
“请注意,只要声音是公开的,您只需要提供 创建客户端时的client_id。如果你想访问 私有声音的流网址,您需要对您的应用进行身份验证。“
有关身份验证的说明,请参阅:https://developers.soundcloud.com/docs/api/guide#authentication
答案 1 :(得分:2)
可以播放私人曲目。最简单的方法是使用私有HTML5小部件(正确注意Jameal G.) - 为此您只需要点击轨道页面上的“共享”按钮,选择“嵌入”标签并复制iframe代码以插入您的网站
否则,如果您想使用自己的代码进行播放,那么您必须使用在网站上共享轨道时(授权时)或查询API时可以获得的secret_token
,也是授权的(所以提供HTTP标头Authorization: Oauth 123…
)。
然后,客户端应用程序可以使用该秘密令牌查询API并在不授权用户的情况下播放您的声音。以下是我分享私人音轨的简单示例:
HTML:
<audio controls></audio>
JS,假设jQuery,但这个想法应该是明确的:
var clientId = 'client_id=YOUR_CLIENT_ID',
sekretToken = 'secret_token=s-wwC6c',
trackUri = 'https://api.soundcloud.com/tracks/128310939.json?' +
secretToken + '&' + clientId,
audio = jQuery('audio');
jQuery
.get(trackUri)
.then(function (result) {
// do not forget to supply client_id also when querying for stream url
audio.attr('src', result.stream_url + clientId);
});
http://jsbin.com/yerilu/edit?html,js,output
<强> UPD 即可。 如何找到秘密令牌。
在SoundCloud网站上,转到您拥有的私人音乐页面,同时在网站上授权,然后按“分享”按钮(左侧第二个“写评论”输入)。您将看到一个标题为“Private Share”的文本输入字段 - 复制链接,斜杠后面的最后一部分是秘密令牌。
您还可以在获得授权后查询API(因此您必须发送Oauth HTTP标头,例如Authorization: Oauth 123…
,当然您将拥有更长的自己的标记号码)以用于您的曲目和曲目表示将具有secret_token
属性,其中包含您可以使用的令牌的值。