我正在使用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的请求?
答案 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()方法。希望如果这仍然是一个问题,我可以提供帮助。