spotipy auth workflow在浏览器中导致error = state_mismatch

时间:2016-08-08 07:09:53

标签: python authentication oauth-2.0 spotify spotipy

我正在尝试通过spotipy及其prompt_for_user_token实用程序运行Spotify身份验证工作流程。我正在遵循here这个官方Spotify网络API教程的说明,逐字逐句地告诉我。并使用Paul Lamere的Spotipy项目here

中的示例

我有一个优质的Spotify帐户和一个注册的应用程序,其中包含客户端ID和客户端密钥(均为32个字符串)和示例中给出的重定向URI(...//localhost:8888/callback)。全部显示在我的申请页面上(...//developer.spotify.com/my-applications

app.js本教程中的“authentication_code”示例启动我的应用程序服务器(已修改为包含我的应用程序的客户端ID,客户端密钥和重定向URI)。

$node app.js 
Listening on 8888

将我的应用CLIENT_IDCLIENT_SECRETREDIRECT_URI导出到我的环境后,如教程中所述,我运行了来自Paul Lamere {{1}的user_playlists.py示例脚本我的用户名(实际上是用户“id” - 9位数字)的示例,因为它只是命令行参数。

之前已打开浏览器(chrome),可选择通过Facebook或密码登录Spotify。我选择Facebook,然后我得到一个浏览器警报:

spotipy

浏览器网址为:

localhost:8888 says:
There was an error during the authentication.

...localhost:8888/#error=state_mismatch 函数永远不会返回。每次我现在运行示例脚本时,浏览器都会打开,但会打开一个空白页面,并显示相同的浏览器警报和URL。

对任何人来说,我做错了什么,或者如何找出认证错误的性质或任何细节是什么或如何解决prompt_for_user_token错误甚至是什么意思?

1 个答案:

答案 0 :(得分:0)

我找到了一个很好的基本示例,通过spotipy来定位oauth工作流程,它不依赖于perelin提供的节点或util.prompt_for_user_token here

此外,spoti py 文档并未指出任何给定的spoti py 方法需要哪些用户级范围,这将有所帮助。但是,在开始为spotify编写客户端代码之前,理解scopes是一个好主意。例如:"播放列表 - 读取 - 私有" user_playlists是必需的,而不是" user-library-read",这在spoti py 文档中没有明确说明,所以你需要查看官方的spotify web api文档,并了解spoti py 方法将(可能)需要的范围。