2017-07-12 8 views
0

Ich versuche, die Spotify Web API für den Zugriff auf meine verfügbaren Spotify-Geräte zu verwenden. Siehe link für den spezifischen API-Endpunkt, auf den ich zugreifen möchte. Ich benutze Python 2.7 in einem virtualenv auf macOS Sierra.Python fordert Bibliothek Header-Autorisierung Problem

Ich habe bereits ein Autorisierungs-Token, das ich verwendet habe, um mehrere andere Funktionsaufrufe zu machen, damit ich weiß, dass das funktioniert. Dies ist jedoch das erste Mal, dass ich die Anforderungsbibliothek verwende, im Gegensatz zum Spotipy-Wrapper, der die HTTP-Anfragen an Spotpy-Funktionsaufrufe abstrahiert.

Die Dokumentation im obigen Link besagt, dass ich mein Autorisierungs-Token in der Kopfzeile übergeben muss. Ich verstehe, dass Sie im Request-Modul Header als ein Wörterbuch übergeben sollten, in dem sowohl der Schlüssel als auch der Wert Strings sind.

Hier ist der Code, den ich mit der Bitte an Sie:

token_string = token.encode('ascii','ignore') 
    print type(token_string) 
    headers = {"Authorization":token_string} 
    r=requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers) 

Ich kodiert das Token als String, weil ich die Anfragen Modul bevorzugt Strings über Unicode und das Token war ursprünglich in Unicode gelesen .

Ich bekomme immer einen 400 Fehler (siehe unten für was es druckt), die ein Autorisierungsproblem ist. Ich denke, das Problem kann sein, dass ich das Berechtigungs-Token nicht korrekt eingib. Hat jemand einen Einblick in das?

<Response [400]> 

Antwort

0

Gemessen an ihrem Beispiel auf der Seite geschrieben, sollten Sie Bearer Präfix für Ihre Autorisierung verwenden (für ‚warum?‘ Überprüfen die 5. Die Token für Ihre Anwendung Abschnitt der Spotify Web API Authorization Guide zurückgegeben werden), so :

headers = {"Authorization", "Bearer {}".format(token_string)} 
r = requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers) 

Sofern Ihr Token gültig ist, arbeiten, dass, sollten Sie brauchen keine Codierung oder irgendetwas zu tun - für bare Münze speichern Sie es nur in der token_string.

Es gibt bereits Python Spotify Client-Module, tho, also anstatt es selbst zu verwirren, warum nicht einen von ihnen verwenden, wie spotipy, die sogar auf der offiziellen Spotify API examples Seite referenziert wird?

+0

Ich fügte 'Bearer' hinzu und der Anruf funktionierte. Danke für die schnelle Antwort. Auch habe ich Spotpy verwendet, aber Spotipy scheint keine Funktionalität für Geräte und Wiedergabe zu haben, daher muss ich leider direkt durch die Anforderungsbibliothek gehen. Wenn es eine Möglichkeit gibt, diese Anrufe mit dem Spotipy-Wrapper zu machen, bin ich daran interessiert, sie zu erkunden. –

Verwandte Themen