Ich versuche, einen Google-Token für den Zugriff auf den Kalender eines Nutzers in einer Django-Anwendung zu authentifizieren. Obwohl ich mehrere Hinweise im Web verfolgt habe, stehe ich mit einer 400-Fehlercodeantwort auf meine Rückruffunktion (Bad Request) fest.
ansichten.py
%Vor%models.py
%Vor%Ich habe die client_secrets.json -Datei direkt von der Google Dev-Konsole heruntergeladen. Der angegebene Client-ID-Typ in der Dev-Konsole ist "Webanwendung", was ich für richtig halte. Was ich bemerkt habe, ist, wenn ich den Token-Validierungscode-Block entferne:
%Vor%alles funktioniert einwandfrei, Flow und Credentials werden korrekt in der Datenbank gespeichert und ich darf den Kalender lesen. Was kann ich möglicherweise falsch machen?
BEARBEITEN : Ich habe auch ausgehende (zu Google) und eingehende (zu Rückruf) Daten überprüft:
AUSGEHEN :
%Vor%ANKOMMEN :
%Vor%Daten sind identisch, mindestens zu Drucken , um zu trösten. Außerdem funktionieren die Generierungs- / Validierungsvorgänge über die Konsole korrekt (xsrfutil.validate_token gibt True zurück, sowohl mit Test- als auch mit echten Daten, einschließlich Benutzermodellinstanzen). Ich bin noch ratloser.
Ich habe genau dasselbe Problem für mehrere Stunden gekämpft, und ich fand heraus, welche Lösung @Ryan Spaulding und @Hans Z antworteten. Es funktioniert!
Dies liegt daran, dass Django 1.7 mit request.REQUEST ein Unicode-Objekt für die obige Statusvariable zurückgibt. Ich habe vorher Django 1.6 benutzt, das eine Zeichenfolge zurückgab.
Hier finden Sie weitere Details. Ссылка Ich habe diesen Beitrag zur zukünftigen Bezugnahme geschrieben.
%Vor% Es könnte ein Unicode-Problem mit request.REQUEST['state']
sein. Versuchen Sie, str()
darum zu legen, also str(request.REQUEST['state'])
.
Tags und Links python django google-api oauth-2.0 oauth2client