我正在开发一个应用程序,创建一个公共的Spotify播放列表的用户谁已经给了适当的授权这样做。
我使用Flask和Python请求库来完成此任务,但在我连续发送了几个POST请求以从Spotify获取访问令牌(使用从前面的逻辑获得的授权码)后,它开始失败。我指的是来自此链接的授权代码流的步骤4:https://developer.spotify.com/web-api/authorization-guide/#authorization_code_flow
我知道授权码是有效的,因为在我运行请求的前几次(可能是5-10次),它不会失败。
当我打印来自POST的响应时,我得到以下信息:{'error_description':‘授权码过期’,'error':'invalid_grant'}
我假设我没有足够快地使用授权码来获取访问令牌(我猜是在访问令牌POST请求之前反复在代码逻辑上失败之后?)但是,我应该如何重置和刷新授权码,这样我才能不断重复发出请求?有没有关于我被禁用了多长时间的信息,以及避免这种情况的一般良好的编程实践?
发布于 2017-08-05 05:45:44
当您使用授权码获取访问令牌时,您还将在同一消息中获得一个刷新令牌。当访问令牌过期时,使用该刷新令牌请求新的访问令牌。
如何使用刷新标记写在您链接到的同一个页面上,再往下一点就是:https://developer.spotify.com/web-api/authorization-guide/#request-access-token-from-refresh-token
我同意这不是最容易理解的,但所有这些事情都有很好的理由。它也是一个称为OAuth2的标准,许多网站使用它来让用户授权应用程序访问他们的数据,所以它在很多地方都很有用。
在这种情况下:“为什么需要刷新令牌来获取访问令牌,我已经有了授权码来获取访问令牌?”,这是因为授权码已经泄漏到了外部,因为它是通过用户的浏览器返回给您的。
发布于 2017-08-05 11:48:21
当用户授予对第三方应用(客户端)的许可时,获得授权码。根据OAuth的2.0规范,授权码必须使用一次,建议其最大生存期为10分钟,以减少安全缺陷。
有关授权码的更多信息,请单击此处:https://www.rfc-editor.org/rfc/rfc6749#section-4.1.2
另一方面,客户端应用程序的服务器端可以使用Refresh token在令人讨厌的令牌过期时请求新的令牌,而不是让用户再次经历所有的OAuth 2.0舞蹈(以进行身份验证和授予权限)。
有关刷新令牌的更多信息,请参阅OAuth 2.0规范的第10.4节。https://www.rfc-editor.org/rfc/rfc6749#section-10.4
https://stackoverflow.com/questions/45135476
复制相似问题