Django 1.7 google oauth2 Token Validierung fehlgeschlagen

8

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.

    
Seether 12.12.2014, 10:25
quelle

2 Antworten

14

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%     
wthrain 10.03.2015, 16:44
quelle
6

Es könnte ein Unicode-Problem mit request.REQUEST['state'] sein. Versuchen Sie, str() darum zu legen, also str(request.REQUEST['state']) .

    
Ryan Spaulding 27.01.2015 22:36
quelle