我正在尝试使用“授权代码流”向Spotipy进行身份验证:
token = util.prompt_for_user_token(username, scope, client_id=client_id,
client_secret=client_secret,redirect_uri=redirect_url)
当我为“用户名”分配任何字符串时,系统会要求我在弹出的浏览器中对请求进行身份验证;一切正常。
当我在第二次运行代码之前为“用户名”设置了不同的字符串时,将根据先前已验证的用户名(在浏览器会话中仍已验证)进行验证。就像根本没有考虑“用户名”的值一样。
此外,我似乎能够将“ pipapo”之类的任意值设置为“ username”;当我登录到我的Spotify帐户(显然不是“ pipapo”帐户)时,该帐户已通过身份验证,诸如current_user_saved_tracks()
之类的方法确实获得了经过身份验证的帐户的资源,而不是“ pipapo”。
无论如何:access_token和refresh_token被保存到缓存文件.cache-pipapo
中;从而将“曾经登录浏览器的用户”的凭据保存到以“错误”帐户命名的文件中。
因此:如果最终用户的交互选择负责代码的作用,那么此参数有什么用?如果为什么在身份验证过程中或多或少没有使用此参数,为什么还要将此参数作为必需参数呢?
答案 0 :(得分:1)
我自己看看spotipy/util.py
,def prompt_for_user_token(...)
的设计方式以及“ username”参数的用途;实际上,它仅用于定义缓存文件名,就像这样将其移交给oauth2.SpotifyOAuth()
:
cache_path=".cache-" + username
因此,您可以在此处使用任何值;不一定是正确的用户名。