使用Soundcloud JavaScript sdk(Chrome扩展程序)

时间:2015-06-13 23:50:26

标签: javascript json api google-chrome-extension soundcloud

我正在使用soundcloud JavaScript sdk开发Chrome扩展程序。它所做的就是当你点击一个按钮时,它会从soundcloud播放一个随机曲目。

我的get请求现在有效,但是当我尝试流式传输时。这是我的代码。

SC.initialize({
client_id: "2d2d0fb839111694b3877c008ea03a85",
});

$(document).ready(function(){
    $("#loadTracks").on("click", function(){

        SC.get('https://api.soundcloud.com/users/user486627426/tracks', {limit: 1}, function(tracks){
            var track = tracks[0];
            console.log(track.uri);
        });

        SC.stream('https://api.soundcloud.com/users/user486627426/tracks', function(sound){
            sound.play();
        });
    });
});

我得到了:

  

GET   镀铬的扩展://connect.soundcloud.com/audiomanager/audiomanager.js   净:: ERR_FAILED

这是我的manifest.json

 {
  "manifest_version": 2,

  "name": "Soundcloud",
  "description": "This extension plays a random track using soundcloud",
  "version": "1.0",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": [
    "activeTab",
    "https://connect.soundcloud.com/sdk-2.0.0.js",
    "*://api.soundcloud.com/*"
  ],

  "content_security_policy": "script-src 'self' https://connect.soundcloud.com/; object-src 'self' https://connect.soundcloud.com/"
}

如何更改使用https://而非Chrome-extension的请求?

2 个答案:

答案 0 :(得分:1)

这可能不是合法的网址:chrome-extension://api.soundcloud.com/tracks

我的猜测是你想要https://api.soundcloud.com/tracks

答案 1 :(得分:1)

在向SoundCloud API发出请求时遇到类似的问题,我通过使用SC.get()来解析轨道的url,然后使用XMLHttpRequest来播放轨道。

它看起来像这样:

SC.get("https://api.soundloud.com/resolve/?url=" + urls[counter], {limit: 1}, function(result){

      var xhr = new XMLHttpRequest();

      client_id = '?client_id=d4ab52d80ed2e7790c3a243495b30093';
      xhr.open('GET', result.uri + client_id);
      xhr.onload = function(){
        var track = JSON.parse(xhr.responseText);
        stream.src = track.stream_url + client_id;
        stream.play();
      }; 
      xhr.send()
  });

Here's a working fiddle我所指的是什么。

我已对此进行了评论,但对于Chrome扩展程序,诀窍是不使用/ resolve,而是将https://api.soundcloud.com插入SC.get()方法。希望如果这仍然是一个问题,我可以提供帮助。