首页 > 解决方案 > 使用 AWS 上的 Spotipy 在 Python 中对 Spotify 进行用户身份验证

问题描述

我目前正在构建一个网络应用程序,该应用程序需要 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 还很陌生,因此没有太多事情要做,也不知道去哪里找。任何帮助将不胜感激。提前致谢!!

标签: pythonamazon-web-servicesauthenticationspotifyspotipy

解决方案


快捷方式

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

数据库方式

目前在 Github 上有一个开放的功能请求,建议将令牌存储在数据库中。随意订阅问题或贡献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


推荐阅读