I am trying to create a playlist with spotify and the spotipy library in python. However, I keep getting a “No token provided” error when making my API request. However, if I use the same token with a curl request, it works! Can someone please help. This is my code:
auth_manager = SpotifyOAuth(client_id=CLIENT,
client_secret=SECRET,
redirect_uri="http://example.com/",
scope=SCOPE,
username=spotify_display_name
)
token = auth_manager.get_access_token(
as_dict=False,
check_cache=True
)
sp = spotipy.Spotify(auth_manager=auth_manager,
auth=token
)
user_dict = sp.current_user()
user_id = user_dict["id"]
print(f"Welcome, {user_dict['display_name']}")
# SEARCH
# QUERY FORMAT: "track: track-name year: YYYY"
spotify_search_endpoint = "https://api.spotify.com/v1/search/"
test_query = "track:Hangin'+Tough year:1989"
search_parameters = {
"q": format_query(test_query),
"type": "track"
}
results = sp.search(q=search_parameters["q"])
print(results)
output:
{'tracks': {'href': 'https://api.spotify.com/v1/search?query=track%3AHangin%27%2BTough%2520year%3A1989&type=track&offset=0&limit=10', 'items': [], 'limit': 10, 'next': None, 'offset': 0, 'previous': None, 'total': 0}}
{
"error": {
"status": 401,
"message": "No token provided"
}
}
This is really frustrating! The authentication is working, otherwise the token wouldn’t have been valid for the curl request. I must be doing something wrong with spotipy.
Curious, what kind of playlists are you creating?
I have to admit I feel like I’m not imaginitive enough to need to script Spotify.
It makes a playlist based on data scraped from the billboard top 100 chart for a given day.
I don’t know if I couldve come up with it on my own, it’s part of a Udemy course I’m doing.
Gotcha. That’s a fun alternative to the usual kind of course work.
Thanks for contributing to the community! Look forward to hearing more from you as you continue.
I was formatting my query poorly >:o
specifically, I was too clever by formatting my query like it appears in the URL of the response (ie: replacing spaces with +'s)
Also, the token was working the whole time, I think I was getting the error because I was attempting to access the search results by clicking the “href” in the response, and in doing was I was hitting the endpoint without providing the right header, which caused me to get the 401 error in my browser.
Hey, sorry we missed helping out!
Did you get everything sorted? Mind adding a “[Solved]” to the beginning of your post title if so?
Yea I did, it wasn’t my intention when I made the post but I basically got the rubber duck experience. I’ve edited the title.
Rubber ducking is the best. Appreciate that, hopefully it helps start a trend.