spotipy auth 工作流在浏览器中导致 error=state_mismatch

Posted

技术标签:

【中文标题】spotipy auth 工作流在浏览器中导致 error=state_mismatch【英文标题】:spotipy auth workflow results in error=state_mismatch in browser 【发布时间】:2016-12-13 20:57:06 【问题描述】:

我正在尝试通过 spotipy 运行 Spotify 身份验证工作流程,它是 prompt_for_user_token 实用程序。我正在按照here 的指示进行操作,这是官方的 Spotify Web API 教程,据我所知逐字逐句。并使用来自 Paul Lamere 的 Spotipy 项目here的示例

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

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

$node app.js 
Listening on 8888

按照教程中的说明将我的应用程序的CLIENT_IDCLIENT_SECRETREDIRECT_URI 导出到我的环境中后,我使用我的用户名(真正的用户“ id" - 9 位数字),因为它是唯一的命令行参数。

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

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

浏览器网址为:

...localhost:8888/#error=state_mismatch

prompt_for_user_token 函数永远不会返回。每次我现在运行示例脚本时,浏览器都会打开,但会打开一个空白页面,并带有相同的浏览器警报和 URL。

任何人都清楚我做错了什么或如何找出身份验证错误的性质或任何详细信息或如何解决state_mismatch 错误甚至它的含义吗?

【问题讨论】:

题外话,但是关于你昨天的mysql问题,在我的这个自我回答的中途检查错误日志文件***.com/questions/39025524中的密码 :-o 哇!这当然是一个彻底的答案@Drew!谢谢。 【参考方案1】:

我发现了一个非常棒的基本示例,它是通过 spotipy 实现的 oauth 工作流,它不依赖于 perelin 提供的 node 或 util.prompt_for_user_token here。

此外,spotipy 文档没有指出任何给定的 spotipy 方法需要几个用户级别范围中的哪一个,这会有所帮助。但此外,在开始为 spotify 编写客户端代码之前了解 scopes 是个好主意。例如: user_playlists 需要“playlist-read-private”,而不是“user-library-read”,这在 spotipy 文档中没有明确说明,因此您需要查看官方 spotify web api 文档并了解您的 spotipy 方法(可能)需要哪个范围。

【讨论】:

以上是关于spotipy auth 工作流在浏览器中导致 error=state_mismatch的主要内容,如果未能解决你的问题,请参考以下文章

iOS11 在所有移动浏览器中导致 CORS 问题

Angularfire2 在 Angular2 中导致 SystemJS 错误

O2 中导致未定义符号的 gcc 优化标志

pip install "numpy" 在 android chaquopy 中导致错误

为啥二进制中的 Sql Server 图像在字符串查询中导致问题但在参数化查询中有效

updateOrCreate 在 laravel 中导致 ErrorException