使用一个小应用程序,该应用程序接收用户在消息传递应用程序中提交的Spotify跟踪URL,并将其添加到公共Spotify播放列表中。该应用程序在Heroku站点上的spotipy python的帮助下运行(所以我有一个有效/回调)并监听用户发布跟踪URL。
当我通过命令行运行应用程序时,我使用util.prompt_for_user_token
。浏览器打开,我成功完成了auth流程,然后将提供的回调URL复制粘贴回终端。
当我运行此应用程序并尝试在消息传递应用程序上添加轨道时,它不会打开浏览器供用户进行身份验证,因此auth流程永远不会完成。
有关如何处理此事的任何建议?我可以通过终端验证一次,捕获代码/令牌然后处理刷新过程,以便最终用户永远不必进行身份验证吗?
P.S。不能添加“spotipy”标签,但惊讶它还没有可用
答案 0 :(得分:2)
我曾经遇到类似谷歌日历API的问题。该应用程序的重要性非常低,因此我通过在浏览器中本地运行auth,找到响应令牌,并手动将其复制到Heroku上的环境变量中,将一个解决方案混合在一起。当然缺点是令牌设置为自动过期(我相信Google日历设置为30天),因此应用程序会定期停止工作,我不得不通过身份验证流程重新复制密钥。可能有一种方法可以实现自动化。
祝你好运!答案 1 :(得分:1)
不幸的是,spotipy util函数只返回access_token,而不是最重要的refresh_token。 access_token将在有限的时间后过期。此时,您需要使用refresh_token创建一个新的access_token。
我没有看到任何公开的函数可以让你抓住refresh_token。但是,您始终可以使用以下组件创建新的access_token:
明智的话,在调试时我使用POSTMAN请求新的access_token POST到https://accounts.spotify.com/api/token - 只有在标题中指定后才能工作