首页 > 解决方案 > Soundcloud API /stream 端点给出 401 错误

问题描述

我正在尝试编写一个反应原生应用程序,它将从 Soundcloud 流式传输一些曲目。作为测试,我一直在使用 python 使用 API,并且我能够发出请求来解析 url、提取播放列表/曲目以及我需要的所有其他内容。

话虽如此,当向任何给定轨道的 stream_url 发出请求时,我收到 401 错误。

当前有问题的网址是: https ://api.soundcloud.com/tracks/699691660/stream?client_id=PGBAyVqBYXvDBjeaz3kSsHAMnr1fndq1

我试过没有 ?client_id...,我试过替换 ? 使用&,我尝试获取另一个client_id,我尝试使用allow_redirects 作为true 和false,但似乎没有任何效果。任何帮助将不胜感激。

每个轨道的流媒体属性都是 True,所以它不应该是权限问题。

编辑:

经过一番研究,我找到了一个半成功的解决方法。API 的 /stream 端点仍然无法工作,但如果您将目标端点更改为http://feeds.soundcloud.com/users/soundcloud:users :/sounds.rss,它将为您提供一个 RSS 提要(大部分)与使用曲目或播放列表 API 端点所获得的相同。

其中包含的链接可以流式传输。

标签: react-nativesoundcloud

解决方案


好的,我想我找到了一个适用于大多数人的通用解决方案。我希望它更容易,但这是我发现的最简单的东西。

  1. 使用 API 从用户那里提取曲目。您可以使用linked_pa​​rtitioning 和next_href 属性来收集所有内容,因为每次调用的最大限制为200 条轨道。

  2. 使用从 JSON 中提取的数据,您可以使用 permalink_url 键来获取您在浏览器中输入的相同内容。

  3. 向 permalink_url 发出请求并访问 HTML。您需要进行一些解析,但您想要的 url 将具有以下效果:

    https://api-v2.soundcloud.com/media/soundcloud:tracks:488625309/c0d9b93d-4a34-4ccf-8e16-7a87cfaa9f79/stream/progressive

    您可能可以使用正则表达式来简单地解析它。

  4. 向这个 url 添加 ?client_id=... 请求,它会在它的返回 json 中给你 YET ANOTHER url。

  5. 使用从上一步返回的 url,您可以直接链接到浏览器中的那个,它会将您带到您的跟踪内容。我通过输入链接检查了 VLC,它正确地流式传输。

希望这对你们中的一些人有所帮助。


推荐阅读