Аутентификация пользователя для Spotify в Python с использованием Spotipy на AWS - PullRequest
2 голосов
/ 16 июня 2020

В настоящее время я создаю веб-приложение, которое требует от пользователя Spotify входа в систему с использованием своих учетных данных для доступа к их спискам воспроизведения.

Я использую оболочку Spotipy python для веб-API Spotify и генерирую токен доступа с использованием,

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

Код работает без проблем на моем локальном компьютере. Но когда я развертываю веб-приложение на AWS, оно не переходит к перенаправленному uri и не разрешает вход пользователя.

Я попытался передать файл ".cache-username" через SCP на свой AWS экземпляр машины и заставил его работать ограниченным образом.

Есть решение этой проблемы? Я новичок в AWS и, следовательно, не имею много информации о go и не знаю, где искать. Любая помощь будет принята с благодарностью. Заранее спасибо !!

1 Ответ

2 голосов
/ 16 июня 2020

Быстрый способ

  1. Запустить сценарий локально, чтобы пользователь мог войти в систему один раз
  2. В локальной папке проекта вы найдете файл .cache-{userid}
  3. Скопируйте этот файл в папку проекта на AWS
  4. Он должен работать

Путь к базе данных

В настоящее время есть открытый запрос функции на Github, что предлагает хранить токены в БД. Не стесняйтесь подписаться на выпуск или внести свой вклад https://github.com/plamere/spotipy/issues/51

Также можно написать небольшой код для сохранения новых токенов в БД и последующего чтения из него. Это то, что я делаю как часть AWS Lambda с использованием DynamoDB, это не очень хорошо, но отлично работает 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

...