Поток аутентификации Spotify (Spotify API)

Я пытаюсь разрешить пользователям входить в систему с помощью Spotify ( используя библиотеку Spotipy ), чтобы обеспечить аутентификацию для создания списка воспроизведения на своей учетной записи и заполнения списка воспроизведения. После того, как пользователь войдет в систему, я покажу список воспроизведения, который он только что создал, в шаблоне перенаправления через встроенный проигрыватель Spotify (используя идентификатор списка воспроизведения вновь созданного списка воспроизведения).

В моем HTML-шаблоне есть поле ввода формы, которое принимает данные от пользователя (его имя пользователя Spotify). У меня также есть список URI Spotify для треков, готовых к заполнению плейлиста.

Я следовал документации Spotipy относительно получения токена для пользователей для аутентификации следующим образом (я удалил свой идентификатор клиента и секрет). Я не уверен, почему он не работает:

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, несколько окон продолжают появляться, а не только одно (см. Терминал ниже). Я считаю, что проблема заключается в получении токена.

вывод терминала при попытке входа

Я установил URI перенаправления в консоли разработчика Spotify таким же, как указано выше (' http://127.0.0.1:8000/save_playlist/ ').

Заранее спасибо!

Всего 1 ответ


Вместо использования Spotipy, быстрое решение - перейти на https://pypi.org/project/spotify-token/ , это скрипт Python, который может генерировать токен Spotify, если указаны имя пользователя и пароль Spotify.

С учетом сказанного, просто имейте в виду, что не каждый предоставит свое имя пользователя и пароль охотно. Ура!


Есть идеи?

10000