刷新令牌斑点

min*_*ina 5 python spotify spotipy

我正在使用spipySpotify检索一些曲目使用python。因此,我收到令牌过期错误,我想刷新我的令牌。但我不明白如何从 spipy 获取刷新令牌。

是否有另一种方法来刷新令牌或重新创建令牌?

谢谢你。

Rac*_*arp 4

Spotipy 使用访问令牌的大致流程是:

  1. 从缓存中获取令牌(实际上不仅仅是访问令牌,还包括刷新和过期日期信息)
  2. 如果令牌在缓存中并且已过期,请刷新它
  3. 如果令牌不在缓存中,则将prompt_for_user_token()处理您在浏览器中完成 OAuth 流程,然后将其保存到缓存中。

因此,如果您向 Spotipy 请求访问令牌(例如通过prompt_for_user_token()或直接设置SpotifyOAuth对象)并且它之前已缓存了访问令牌/刷新令牌,它将自动刷新。默认情况下,缓存位置应位于.cache-<username>工作目录中,因此您可以在那里手动访问令牌。


如果您向 SpotipySpotify()客户端提供auth授权参数,它将无法自动刷新访问令牌,我认为它会在大约一个小时后过期。您可以改为提供一个client_credentials_manager,它将从中请求访问令牌。该对象实现的唯一要求client_credentials_manager是它提供一个get_access_token()不带参数并返回访问令牌的方法。

我不久前在 fork 中尝试过这一点,这里是对对象的修改SpotifyOAuth,以允许它充当 a client_credentials_manager这里相当于prompt_for_user_token()返回SpotifyOAuth可以作为Spotify()凭据管理器参数传递给 Spotipy 客户端的对象。

  • 您知道是否可以自动复制粘贴打开的包含代码的浏览器页面?我想将我的代码放在服务器上,但我不知道如何处理 URL 的复制/粘贴。谢谢。 (3认同)
  • @mina,我通过在笔记本电脑上进行一次性手动复制和粘贴,然后将 .cache-&lt;username&gt; 文件复制到服务器,获得了在服务器(AWS Lambda)上工作的spotipy auth。该文件包含一个“refresh_token”,我相信它允许它自动刷新 access_token。 (2认同)