带有 PHP 后端和速率限制的 Spotify 自动播放列表管理
Posted
技术标签:
【中文标题】带有 PHP 后端和速率限制的 Spotify 自动播放列表管理【英文标题】:Spotify automated playlist management with PHP back-end and rate limits 【发布时间】:2014-11-01 12:57:54 【问题描述】:两个问题:
问题 1。
我们需要从我们的后端 (PHP) 管理 Spotify 用户的 4 个播放列表(无需用户登录)。 我们网站的访问者可以向我们的网站提交他们喜欢的多首歌曲。基于此,我们创建和管理 4 个播放列表,其中包含“提交最多的歌曲”。我们希望从我们的 php 后端自动化这个过程,而不需要在几个月的时间里每天手动管理播放列表。 我们想为此使用 Spotify API,但需要用户访问令牌来访问和管理用户播放列表。我们创建了一个概念证明,它“用 PHP 模拟浏览器”。我们登录、检索身份验证令牌、使用身份验证令牌请求访问令牌,然后执行必要的 API 调用——所有这些都无需用户干预。 这种方法有效,但我们怀疑并知道这不是 100% 的方法:)。我们不是在滥用 API 或其他任何东西,但如果这不是正确的方法,我们如何定期自动管理这 4 个用户播放列表? 请注意我们的后端是 Apache – 基于 PHP。我们也可以使用 NodeJS,但话又说回来,这也不是办法。
问题 2。
用户向我们的网站提交歌曲。当用户在搜索字段中输入(歌曲标题/艺术家姓名)时,一秒钟后,我们对 Spotify API 执行 ajax 调用,并根据输入显示搜索结果。考虑到网站上预期的访问者数量,这可能会给 API 带来大量流量。 文档 (https://developer.spotify.com/web-api/user-guide/#rate-limiting) 对应用的速率限制不是很清楚。是否可以为我们提供更好的这些速率限制的指示,因为我们希望防止这种情况破坏我们的网站?
提前致谢。
【问题讨论】:
【参考方案1】:问题 1
如果您想在某个用户的库中创建播放列表,您需要该用户向您的应用授予这些权限。
在您的情况下,您将实现 Authorization Code flow 以获取刷新和访问令牌。
存储获取的访问令牌和刷新令牌,使用访问令牌执行请求,并在访问令牌过期时使用刷新令牌更新访问令牌。
如果您要在您拥有的用户中管理这些播放列表,则无需向用户显示任何登录表单。登录一次,然后在脚本中使用获取的令牌,该脚本将定期更改您用户的播放列表。
问题 2
目前 Spotify 开发者网站上没有指定限制,但它们的 API 应该能够处理您的搜索请求。如果您想更加安全,请验证您的请求,以便它们受 client_id 基础限制。要获取这样一个不包含任何用户信息的令牌,您可以使用Client Credentials flow。
【讨论】:
感谢您的反馈。 Q1 -> 这实际上就是我们正在做的事情,但是在没有用户登录的情况下执行此操作的首选方法是什么?关于 Q2 -> 我们不能要求每个用户都使用他的 Spotify 帐户登录,因此限制是基于 client_id 的。这将是用户通过流程的额外障碍。没有关于这些速率限制的详细文档吗?我们应该担心这些速率限制的问题吗?我预计网站会有很多流量。 Q1 -> 未经用户允许,您无法在用户的库中进行更改。如果您阅读客户端凭据流程文档,则没有登录表单。您基本上为您的应用程序获取一个令牌,提供您的 client_id 和秘密。您可以获取一个并使用它直到它过期,然后请求一个新的。那将在服务器端完成。 您好,我们将按照您的建议调整我们的流程。我们会及时通知您。请您澄清关于速率限制的 Q2 吗?没有基于 Client_id 的选项,这将要求我们的访问者使用他们的 Spotify 帐户登录,这不是我们流程中的选项。我只是想检查一下我们是否应该担心速率限制。如果速率限制会阻止我们的请求,那么这将削弱我们的应用程序,使其无用。我们是否应该担心速率限制——也许这些限制可以忽略不计?一个指示(请求/小时/天)将不胜感激。 Q2 -> 客户端凭据与用户登录无关。您会使用注册应用程序时获得的凭据获得令牌。没有登录表单。关于速率限制,我们仍在调整值,它们会根据负载而变化。您的用例可以正常工作。你不应该担心它。 谢谢!我们现在正在调整我们的流程。我会及时向大家发布。很高兴我们不必担心速率限制。 :)以上是关于带有 PHP 后端和速率限制的 Spotify 自动播放列表管理的主要内容,如果未能解决你的问题,请参考以下文章
带有 JavaScript 后端和前端的多人游戏。最佳实践是啥?
带有反应的无头 WordPress - 后端和前端的样式古腾堡