I am currently unable to do authorization control flow for any user other than myself using the Spotipy API. I'm able to prompt login but only for the account associated with the client id and client secret I'm using. In my code I'm using the username variable/prompt to prompt authorization but regardless of what username I use, it only validates for the client key associated account.
import os
import spotipy
import spotipy.util as util
os.environ["SPOTIPY_CLIENT_ID"] = ""
os.environ["SPOTIPY_CLIENT_SECRET"] = ""
os.environ["SPOTIPY_REDIRECT_URI"] = "http://localhost:8080"
def get_args():
playlistName = input('Enter a playlist name --> ')
playlistDescription = input('Enter a playlist description --> ')
username = input('Enter a spotify username --> ')
numSong = int(input('How many recent songs in your playlist? --> '))
return playlistName, playlistDescription, username, numSong
def main():
playlistName, playlistDescription, username, numSong = get_args()
scope = "playlist-modify-public user-read-recently-played playlist-modify-public"
uir = "http://localhost:8080"
token = util.prompt_for_user_token(username, scope, os.environ["SPOTIPY_CLIENT_ID"], os.environ["SPOTIPY_CLIENT_SECRET"], uir)
print("SUCCESS")
sp = spotipy.Spotify(auth=token)
user_id = sp.me()['id']
print("mark" + user_id)
playlist = sp.user_playlist_create(user_id, playlistName, True, playlistDescription)
playlist_id = playlist["id"]
tracks = []
for item in sp.current_user_recently_played(limit=numSong)["items"]:
tracks.append(item["track"]["id"])
sp.user_playlist_add_tracks(user_id, playlist_id, tracks, position=None)
if __name__ == '__main__':
main()
Edit After testing my application on an external device it appears that the authorization control flow works. For users experiencing this issue it's probably caching the prior access token.