在AWS上使用Spotipy在Python中对Spotify进行用户身份验证

2024-05-12 21:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在构建一个web应用程序,要求Spotify用户使用其凭据登录,以便访问其播放列表

我正在为Spotify的Web API使用Spotipy python包装器,并使用

token = util.prompt_for_user_token(username,scope,client_id,client_secret,redirect_uri)

代码在本地计算机上运行时没有任何问题。但是,当我在AWS上部署web应用程序时,它不会转到重定向的uri并允许用户登录

我已经尝试通过SCP将“.cache username”文件传输到我的AWS机器实例,并使其以有限的方式工作

这个问题有解决办法吗?我对AWS还比较陌生,因此没有太多的东西要做,也不知道去哪里找。任何帮助都将不胜感激。提前谢谢


Tags: 用户clienttokenawsapiweb应用程序util
1条回答
网友
1楼 · 发布于 2024-05-12 21:23:00

捷径

  1. 在本地运行脚本,以便用户可以登录一次
  2. 在本地项目文件夹中,您将找到一个文件.cache-{userid}
  3. 将此文件复制到AWS上的项目文件夹中
  4. 应该行得通

数据库方式

Github上当前有一个开放的特性请求,建议将令牌存储在DB中。欢迎订阅本期或投稿https://github.com/plamere/spotipy/issues/51

还可以编写一些代码将新令牌持久化到数据库中,然后从中读取。这就是我使用DynamoDB作为AWS Lambda的一部分所做的,它不是很好,但它工作得非常好https://github.com/resident-archive/resident-archive/blob/a869b73f1f64538343be1604d43693b6165cc58a/functions/to-spotify/main.py#L129..L157


API方式

这可能是最好的方式,因为它允许多个用户同时登录。不过,它有点复杂,需要您托管一个可以通过URL访问的服务器

本例使用Flask,但可以将其改编为Django,例如https://github.com/plamere/spotipy/blob/master/examples/app.py

相关问题 更多 >