python - 使用 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 还很陌生,因此没有太多事情要做,也不知道去哪里找。任何帮助将不胜感激。提前致谢!!
解决方案
快捷方式
- 在本地运行脚本,以便用户可以登录一次
- 在本地项目文件夹中,您将找到一个文件
.cache-{userid}
- 将此文件复制到 AWS 上的项目文件夹
- 它应该工作
数据库方式
目前在 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
推荐阅读
- ios - 循环遍历对象数组和基于属性的过滤器
- r - 计算百分比并保留名称
- kotlin - 即使我已在 for 循环中成功添加项目,列表仍为空
- java - 递归问题中的原子整数或 int[] (LeetCode124)
- excel - 如何跨多个工作表将 A 列转换为文本
- r - R 中的 if 语句仅对所有语句使用第一个条件。为什么?
- c# - 用设定值替换连续重复,但前提是连续范围的长度超过阈值
- python - 尝试“一切”后如何修复 IndexError
- c# - Console.ReadKey(true) 需要两次按键才能显示一个输入
- c++ - 当我不希望它被调用时,正在调用 C++ 析构函数