无法在 Spotipy 中获取新令牌

Posted

技术标签:

【中文标题】无法在 Spotipy 中获取新令牌【英文标题】:Can't get new token in Spotipy 【发布时间】:2021-03-14 16:07:15 【问题描述】:

大约一个月前,我在玩图书馆,所有这些都按计划进行。现在我想再次播放它,但在尝试请求热门曲目时出现以下错误:

spotipy.exceptions.SpotifyException:http 状态:400,代码:-1 - 无法刷新令牌:代码:400 原因:错误请求,原因: '授权':'基本 Y2Y2NGFiNDY2ZDI0NDIyMzgzMjRhMjI0NTQxZDkzOGQ6MmJmMTQ5MTgxYmIxNDczZDg5MTAwOTEwYzkzOWRkZjU='

我尝试撤销我帐户的权限,希望它会提示新的授权请求,但它没有。它甚至没有向我显示我必须授予访问我帐户权限的页面。如何获得新令牌?

注意:我知道这不是使用您的秘密的安全方法,也不是请求范围的好方法,但我只是在玩这个库,并没有任何发布代码的意图。

代码:

import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
from spotipy.oauth2 import SpotifyOAuth

cid= "cid_here"
secret= "secret_here"
client_credentials_manager = SpotifyClientCredentials(client_id=cid, client_secret=secret)

scopeFull = "ugc-image-upload user-read-recently-played user-top-read user-read-playback-position user-read-playback-state user-modify-playback-state user-read-currently-playing app-remote-control streaming playlist-modify-public playlist-modify-private playlist-read-private playlist-read-collaborative user-follow-modify user-follow-read user-library-modify user-library-read"
scopeRead = "user-read-recently-played user-top-read user-read-playback-position user-read-playback-state user-read-currently-playing playlist-modify-public playlist-read-private playlist-read-collaborative user-follow-read user-library-read "
scopePlay = "app-remote-control streaming "

ranges = ['short_term', 'medium_term', 'long_term']

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cid, client_secret=secret,redirect_uri="https://google.com/",scope=scopeRead + scopePlay))

for sp_range in ['short_term', 'medium_term', 'long_term']:
    print("range:", sp_range)

    results = sp.current_user_top_tracks(time_range=sp_range, limit=10)

    for i, track in enumerate(results['items']):
        print("||", i + 1, track['name'], "-", track['popularity'])
    print()

【问题讨论】:

【参考方案1】:

您能否检查一下您是否拥有正确的 client_id 和/或 client_secret。

我已经使用我的运行它并且工作正常,但是,当我故意让 client_id 或 client_secret 错误时,它会引发完全相同的错误。

也许它正在缓存错误的凭据?取消缓存的一种简单方法是更改​​范围(即删除一个,然后尝试,之后可以添加回来)。

【讨论】:

以上是关于无法在 Spotipy 中获取新令牌的主要内容,如果未能解决你的问题,请参考以下文章

Spotipy Oauth2 流存储令牌

Spotipy 使用授权代码流刷新令牌

Spotify 在服务器上获取访问令牌 - Spotify API 有那么糟糕吗?

Spotipy client_credential_manager 未提供令牌

(JAVA) Google API 分析 - 无法使用“刷新令牌”获取新的“访问令牌”

如何使用 ajax 在 LARAVEL 中获取新的 CSRF 令牌