【问题标题】:How play a private track with soundcloud Javascript SDK如何使用 soundcloud Javascript SDK 播放私人曲目
【发布时间】:2014-10-23 01:20:16
【问题描述】:

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


});

感谢您的帮助。

【问题讨论】:

  • 你不能玩它,因为它是私人的。将其公开并重试。
  • 我试过了,它是正确的。你可以播放私人曲目吗?我应该发送一个访问令牌来访问我的私人曲目。
  • 私有的不能使用。
  • 我应该把我所有的曲目都公开。我认为他们是播放私人曲目的解决方案。
  • 您会将它们公开,还是需要其他解决方案?

标签: javascript api soundcloud


【解决方案1】:

可以播放私人曲目。最简单的方法是使用私有 HTML5 小部件(正如 Jameal G. 正确注意到的那样)——为此,您只需点击曲目页面上的“分享”按钮,选择“嵌入”选项卡并复制 iframe 代码以插入您的网站。

否则,如果你想用自己的代码播放它,那么你必须使用secret_token,你可以在网站上分享曲目时(授权时)或查询API时,也授权(所以提供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 属性与您可以使用的令牌的值。

【讨论】:

  • 你说secret token是accessToken(SC.accessToken)吗?
  • 当我点击私人共享时。我寻求一个代码 s-XXXXX 来结束 url。
  • 但是我不明白第2点我有一个401错误(未经授权)
  • 你不必同时使用这两种方法,如果第一种方法适合你,那很酷。
  • 我还有另一个理想。我可以使用 Soundcoud Player 播放我的私人曲目
【解决方案2】:

如果您希望从非公开帐户播放声音,则需要提供身份验证令牌。来自 SoundCloud 的 API 指南:

"请注意,只要声音是公开的,您只需提供 创建客户端时的 client_id。如果您想访问 私有声音的流 URL,您需要对您的应用进行身份验证。”

有关身份验证的说明,请参阅:https://developers.soundcloud.com/docs/api/guide#authentication

【讨论】:

  • 好的...如果用户没有 Soundcloud 帐户,他不能在我的网站上收听我的私人信息吗?
  • 正确。用户需要一个 soundcloud 帐户。
  • 对不起,我错过了你的问题。看来您可以流式传输经过身份验证的用户的私人曲目,但不能流式传输您自己的。在comments of this thread 中,user1386101 提供了一种用于流式传输您自己的曲目的解决方案,但尚未得到社区的验证。
  • 或者,您可以embed a secret widget 并使用widget API 与之交互。
  • @pianoman99 不完全正确,如果您有 secret_token 值,您可以向未经授权的客户播放私人曲目
猜你喜欢
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多