如何使用soundcloud Javascript SDK播放私人音轨

时间:2014-10-23 01:20:17

标签: javascript api soundcloud

我的私人跟踪有问题。我的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();
    });


});

谢谢你的帮助。

2 个答案:

答案 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 即可。 如何找到秘密令牌。

  1. 在SoundCloud网站上,转到您拥有的私人音乐页面,同时在网站上授权,然后按“分享”按钮(左侧第二个“写评论”输入)。您将看到一个标题为“Private Share”的文本输入字段 - 复制链接,斜杠后面的最后一部分是秘密令牌。

  2. 您还可以在获得授权后查询API(因此您必须发送Oauth HTTP标头,例如Authorization: Oauth 123…,当然您将拥有更长的自己的标记号码)以用于您的曲目和曲目表示将具有secret_token属性,其中包含您可以使用的令牌的值。