Я пытаюсь разрешить пользователям входить в систему с помощью Spotify ( с использованием библиотеки Spotipy ), чтобы обеспечить аутентификацию для создания списка воспроизведения на их учетной записи и заполнения списка воспроизведения. После того, как пользователь войдет в систему, я покажу список воспроизведения, который он только что создал, в шаблоне перенаправления через встроенный проигрыватель Spotify (используя идентификатор списка воспроизведения недавно созданного списка воспроизведения).
У меня есть поле для ввода формы в Мой шаблон HTML, который принимает данные от пользователя (его имя пользователя Spotify). У меня также есть список URI Spotify для треков, готовых для заполнения списка воспроизведения.
Я следовал Документация Spotipy относительно получения токена для пользователей для аутентификации следующим образом (я удалил свой клиент- id & secret) .. Я не уверен, почему это не работает:
import os
import spotipy
import spotipy.util as util
from json.decoder import JSONDecodeError
from datetime import date
@login_required
def save_playlist(request, data='Default_Data'):
username = data.split('/')[0] #spotify username
track_ids = data.split('/')[1:11] #list of spotify IDs for playlist tracks
client_id = '****'
client_secret = '****'
scope = 'playlist-modify-public, playlist-modify-private'
redirect_uri = 'http://127.0.0.1:8000/save_playlist/'
#check if username is already in cache, if not, create cache
try:
token = util.prompt_for_user_token(username,
scope=scope,client_id=client_id,
client_secret=client_secret,redirect_uri=redirect_uri)
except (AttributeError, JSONDecodeError):
os.remove(f".cache-{username}")
token = util.prompt_for_user_token(username,
scope=scope,client_id=client_id,
client_secret=client_secret,redirect_uri=redirect_uri)
sp=spotipy.Spotify(auth=token)
today = date.today()
date_string = (str(today.day) + ' - ' + str(today.month) + ' - ' + str(today.year))
#playlist title
playlist_name = f"GENIE - " + username + ' | ' + date_string
#create a new public playlist to be populated
sp.user_playlist_create(username, name=playlist_name, public=True)
#id of playlist we just created
playlist_id = sp.current_user_playlists(limit=1)['items'][0]['id']
#add playlist tracks to this playlist
sp.user_playlist_add_tracks(username,playlist_id,tracks=track_ids)
return render(request, 'blog/save_playlist.html', {'playlist_id':playlist_id})
Когда пользователь вводит свое имя пользователя и логины в Spotify, несколько windows продолжают появляться, а не один ( см терминал ниже). Я полагаю, что проблема заключается в получении токена.
вывод терминала при попытке входа в систему
Я установил URI перенаправления в консоли разработчика Spotify на быть таким же, как указано выше ('http://127.0.0.1: 8000 / save_playlist / ').
Заранее спасибо!