在不使用浏览器的情况下通过桌面应用程序完成Spotify授权代码流

Mit*_*ard 5 python api heroku spotify oauth-2.0

在一个小型应用程序上工作,该应用程序使用用户在消息传递应用程序中提交的Spotify跟踪URL并将其添加到公共Spotify播放列表中。该应用程序在Heroku网站上借助Spotipy python运行(因此我有一个有效的/ callback),并监听发布跟踪URL的用户。

通过命令行运行应用程序时,我使用util.prompt_for_user_token。浏览器打开,我成功通过身份验证流程,然后将提供的回调URL复制粘贴回终端。

当我运行此应用程序并尝试在消息传递应用程序上添加曲目时,它不会打开浏览器供用户进行身份验证,因此身份验证流程永远不会完成。

有关如何处理此问题的任何建议?我是否可以通过终端进行一次身份验证,捕获代码/令牌然后进行刷新过程,以使最终用户永远不必进行身份验证?

PS尚无法添加标签“ spotipy”,但感到惊讶的是它尚不可用

lou*_*how 2

不幸的是,spotipy util 函数只返回access_token,而不是最重要的refresh_token。access_token 将在有限的时间后过期。此时,您需要使用refresh_token 创建一个新的access_token。

我在spotipy中没有看到任何允许您获取refresh_token的公共函数。但是,您始终可以使用以下组件创建新的 access_token:

  • 您的 Spotify 客户端 ID(在您的应用程序页面上找到)
  • 您的 Spotify 客户端密码(可在您的应用程序页面上找到)
  • 您的 Spotify 刷新令牌 - 请参阅此处了解一次性获取该令牌的方法 - https://developer.spotify.com/web-api/tutorial/

明智地说,在调试时,我使用 POSTMAN 请求一个新的 access_token 来 POST 到https://accounts.spotify.com/api/token - 它只有在标头中指定后才起作用

  • '内容类型':'application/x-www-form-urlencoded'