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.
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.