【问题标题】:Soundcloud API Error NS_ERROR_DOM_BAD_URI: Access to restricted URI denied (JavaScript)Soundcloud API 错误 NS_ERROR_DOM_BAD_URI:访问受限 URI 被拒绝 (JavaScript)
【发布时间】:2013-12-21 23:49:29
【问题描述】:

我刚刚开始熟悉 Soundcloud 的 API,但遇到了一些麻烦。据我所知,SC.initialize 中我只需要一个 client_id。我已经使用 Code Academy 的教程开始学习,这很棒。现在我实际上正在尝试实现一些我遇到了一些麻烦的东西。
当我在 Code Academy 中运行我的代码时,它完全符合我的要求。现在我试图在浏览器中运行它,我得到一个空白屏幕和这个错误:

NS_ERROR_DOM_BAD_URI:访问受限 URI 被拒绝 @http://connect.soundcloud.com/sdk

经过一番研究,我发现这些错误与域前缀有关。所以我尝试将其更改为 http://www.connect.soundcloud.com/sdk。但是当我这样做时,我得到了一个不同的错误:

SC 未定义

AHHHH我做错了什么?!
我是使用 API 的新手,非常感谢任何帮助。
这是我正在做的事情:
(JavaScript)

SC.initialize({
    client_id: 'hidden for privacy',
});

$(document).ready(function() {
    SC.get('/users/5577686/tracks', {limit:7}, function(tracks) {
        $(tracks).each(function(index, track) {
            $('#tracktitle').append($('<li></li>').html(track.title));
            $('#trackimage').append("<img src='" + track.artwork_url + "' />");
            $('#play').append("<a href='" + track.permalink_url + "' >" + "Play" + "</a>");
        });
    });
});

(HTML)

<!DOCTYPE HTML>
<html>
    <head>
        <script src="http://connect.soundcloud.com/sdk.js"></script>
        <script src="soundcloud.js"></script>
    </head>
    <body>
        <div id="tracktitle"></div>
        <div id="trackimage"></div>
        <div id="play"></div>
    </body>
</html>

我真的不认为代码有什么问题,因为在 Code Academy 中一切似乎都运行良好。我认为熟悉 API 更多的是一个问题。我需要做一些进一步的认证吗?我需要的不仅仅是客户 ID 吗?我再次陷入困境,并希望在这方面提供任何帮助。感谢阅读。

(我也一步步跟着 Coding for GOOD 的 Soundcloud API 集成教程,我得到了完全相同的错误,所以这进一步证实了代码可能不是问题,但连接到 API 可能是)

【问题讨论】:

  • 已解决!万一其他人遇到这个问题:不知道文件需要托管在公共服务器上。当我观看 Coding for GOOD 教程时,他不知何故在本地运行它们。哇!
  • 服务器不必为此公开。它只需要从 Web 服务器而不是文件系统运行它。有很多不同的解决方案,但如果你有一台 Mac,你可以看看像 Anvil 这样的工具。
  • @N1G3L 你应该添加它作为这个问题的答案并接受它。

标签: javascript api sdk soundcloud


【解决方案1】:

这里的问题是,当连接到托管在另一台服务器上的 API 时,您必须使用相同的协议。对于本地文件,您使用文件协议 (file://),其中 soundcloud 使用:http://https://

按照以下步骤操作:

  1. 获取服务器(XAMPP/LAMPP/WAMPP 用于 PHP/Regular HTML,NodeJS 用于 JS 服务器,或 Tornado 用于 Python)
  2. 查找您的服务器使用的协议

如果您的服务器使用http 协议,那么您的域必须是http://soundcloud.com/...,但如果您的服务器使用https 协议,那么API 的域必须是https://....。因此,一旦您获得了匹配的协议,您就可以通过 API 传递数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    相关资源
    最近更新 更多