【问题标题】:Is there a way to use the spotify WEB API to check if spotify is installed?有没有办法使用 spotify WEB API 来检查是否安装了 spotify?
【发布时间】:2012-11-21 22:32:28
【问题描述】:

基本上我要做的是创建一个链接列表,如果安装了 Spotify,它将使用 Spotify URI 链接到 Spotify,如果没有安装,则只是纯文本。

据我所知:

spotify:track:7yOKhepYf8pO8ILT2Z5KN1

如果在浏览器中输入并安装了 Spotify,它将立即启动曲目或您请求的任何内容。

如果未安装 Spotify,这只会运行正常的浏览器请求。

我在文档中查找了一些我可以挂钩的东西,但我找不到任何可以在外部应用程序上使用的东西,只是重申这个应用程序不是原生 Spotify 应用程序。

我正在寻找的最终结果是一种调用方法,该方法检查是否安装了 Spotify 以返回 true,如果未安装则返回 false。

要求仅使用 HTML CSS 和 JavaScript。

【问题讨论】:

  • 我怀疑这是可能的。 Spotify 链接似乎通过 Spotify 应用程序将自身注册为 URL 处理程序来工作,并且您无法检测到可用的 URL 句柄。 (见stackoverflow.com/questions/836777/…)。也就是说,除非 Spotify 安装了浏览器插件。
  • 如果可能的话会有安全风险,所以我对此表示怀疑。

标签: javascript api spotify


【解决方案1】:

除非您使用类似firebreath 的方式编写浏览器插件,否则出于安全原因,我认为这是不可能的。

【讨论】:

    【解决方案2】:

    我尚未对此进行深入研究,但您可以使用端口 4380 上的 spotilocal.com 域(只是对 127.0.0.1 的 DNS 引用)联系本地 Spotify 客户端。

    如果它允许 CORS,那么您应该能够使用 javascript 调用此 URL:

    http://1234.spotilocal.com:4380/remote/status.json

    看看结果如何。

    这就是 Facebook 进行 Spotify 集成的方式,如下所示:

    What is the advantage of having a domain name (spotilocal) that resolves to 127.0.0.1?

    更新

    如果您使用的是 Chrome,请在此页面上打开您的开发工具并粘贴并在控制台中运行:

    $.get('http://1234.spotilocal.com:4380/remote/status.json', function(data){console.log(data)});
    

    响应标头包含Access-Control-Allow-Origin:*,因此您应该能够使用页面中的 AJAX 调用该 URL

    更新 2 (24/07/13)

    最新版本的 spotify 客户端(我使用的是 0.9.1.57)不再包含 Access-Control-Allow-Origin 标头,因此上述方法不再有效。

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 2017-11-19
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 2014-12-22
      • 1970-01-01
      相关资源
      最近更新 更多