【问题标题】:Error 403 when trying to control playback on another device through spotipy library (Spotify Web API)尝试通过 spotipy 库(Spotify Web API)控制另一台设备上的播放时出现错误 403
【发布时间】:2020-07-16 23:58:50
【问题描述】:

描述错误

每当我尝试在 Spotify 设备上开始播放时,都会收到 403 错误。

我正在尝试使用第 197 行上的代码 client.start_playback(device_id=spotify_device_id, context_uri=tag_uri) 在我的 Google Home Mini 扬声器上播放(使用另一个名为 pychromecast 的库,但它正在工作)。

403 错误通常是当用户没有高级版时(我认为)。 虽然我有 Premium 并且已经仔细检查过。授权工作正常。

我的代码

https://pastebin.com/fha4Rbdh

预期行为

  • 从 NFC 标签读取 Spotify 专辑 URI
  • 开始在 Spotify 设备(我的 Google Home Mini)上播放该专辑

实际行为

  • 从 NFC 标签读取 Spotify 专辑 URI
  • 尝试在 Spotify 设备上开始播放
  • 因 403 错误而失败

输出

https://pastebin.com/Ejizn084

环境:

  • 操作系统:树莓派 3
  • Python 版本 3.5.3
  • spotipy 版本 2.13.0

附加上下文

我的代码在 Windows 10 上运行,然后在转移到我的 pi 后不再运行。 我认为它没有正确授权(它不是)所以我修复了它,但我仍然收到同样的错误。

我认为这个错误可能与我使用的范围有关,即:

_scope = 'streaming user-read-playback-state user-modify-playback-state'

请帮忙!

【问题讨论】:

  • 顺便说一句:streaming 仅适用于 Web Playback SDK。否则他们似乎很好。当播放操作受到限制时,Spotify 会返回错误原因。你能检查一下回复是否有回复吗? Here 是原因的索引。
  • 谢谢,菲利克斯!我会检查一下。我认为 spotipy 库没有返回原因,只是 403。我会尝试向该库提出请求,看看是否能得到原因。
  • 您可能能够捕获错误并以这种方式获得原始响应,我认为 Spotipy 包装了请求。如果我没记错的话,试试catch Exception as err 并打印err.response.json()。抱歉,我没有时间检查所有内容。
  • 我收到一个错误:AttributeError: 'SpotifyException' object has no attribute 'response'
  • 我尝试打印 err.msgerr.http_statuserr.codeerr.msg 什么都不打印,err.http_status 打印 403,err.code 打印 -1。

标签: python python-3.x spotify spotipy


【解决方案1】:

我不久前遇到过这个问题,但如果我没记错的话,我一直将 Spotify URI 设置为小写,但 Spotify URI 区分大小写。因此,当我请求开始播放这些 URI 时,Spotify 不理解其中的一些,但理解了其他一些(没有大写字母的 URI)。这就解释了为什么它可以在我的笔记本电脑上运行,但不能在树莓派上运行。我在每个上都使用了不同的 URI(不是很科学)。

我花了 3 个月的时间进行断断续续的调试来解决这个问题。有时,最小的改变可以解决最大的问题。

【讨论】:

  • 您可以在第 179 行看到 here 自己的行。从那时起我已经清理了很多代码,但这显示了与引起错误的行一样的代码。跨度>
猜你喜欢
  • 1970-01-01
  • 2023-03-06
  • 2017-12-31
  • 2022-10-08
  • 2017-07-28
  • 1970-01-01
  • 2021-04-09
  • 2010-09-09
  • 1970-01-01
相关资源
最近更新 更多