2009-03-30 11 views
6

Ich versuche, meine Django-App (NICHT mit der Google App-Engine) abrufen Daten aus Google Kontakte mit Google Kontakte Daten-API. Geht man durch authentication documentation sowie Data API Python client docsGoogle-Daten-API-Authentifizierung

Erste Schritt (AuthSubRequest), die das Einweg-Token funktioniert gut funktioniert. Der nächste Schritt (AuthSubSessionToken), bei dem ein einmal verwendbares Token auf ein Sitzungstoken aktualisiert wird. Der Python-API-Aufruf UpgradeToSessionToken() einfach nicht für mich arbeiten, um es gab mir NonAuthSubToken Ausnahme:

gd_client = gdata.contacts.service.ContactsService() 
gd_client.auth_token = authsub_token 
gd_client.UpgradeToSessionToken() 

Als Alternative ich möchte es zum Laufen zu bringen, indem „manuell“ Konstruktion der HTTP-Anforderung:

url = 'https://www.google.com/accounts/AuthSubSessionToken' 
headers = { 
       'Content-Type': 'application/x-www-form-urlencoded', 
       'Authorization': 'AuthSub token=' + authsub_token, 
       'User-Agent': 'Python/2.6.1', 
       'Host': 'https://www.google.com', 
       'Accept': 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2', 
       'Connection': 'keep-alive', 
      } 
req = urllib2.Request(url, None, headers) 
response = urllib2.urlopen(req) 

Dies gibt mir einen anderen Fehler:

HTTP-Fehler 302: Der HTTP-Server zurückgegeben einen Umleitungsfehler, der zu einer Endlosschleife führen würde. Die letzte 30x Fehlermeldung war: Vorübergehend verschoben

Was mache ich hier falsch? Ich würde mich über Hilfe/Ratschläge/Vorschläge mit einer der Methoden freuen, die ich versuche zu verwenden: Python-API-Aufruf (UpgradeToSessionToken) oder manuelle Erstellung einer HTTP-Anfrage mit urllib2.

Antwort

4

Nach der 2.0-Dokumentation here gibt es ein Python-Beispielsatz ...

Running the sample code

A full working sample client, containing all the sample code shown in this document, is available in the Python client library distribution, under the directory samples/contacts/contacts_example.py .

The sample client performs several operations on contacts to demonstrate the use of the Contacts Data API.

Hoffentlich wird es Ihnen in die richtige Richtung weisen.

1

Ich hatte vor kurzem ein ähnliches Problem. Meine wurde behoben, indem ich "sicher" auf "wahr" setzte.

next = 'http://www.coolcalendarsite.com/welcome.pyc' 
    scope = 'http://www.google.com/calendar/feeds/' 
    secure = True 
    session = True 
    calendar_service = gdata.calendar.service.CalendarService() 
+0

Vielen Dank für Ihren Vorschlag, ich werde es versuchen –

1

Es gibt vier verschiedene Authentifizierungsmethoden. Ist es wirklich wichtig für Sie, AuthSub zu verwenden? Wenn Sie mit AuthSub nicht arbeiten können, sollten Sie den Ansatz ClientLogin in Betracht ziehen. Ich hatte keine Schwierigkeiten, das zur Arbeit zu bringen.

+0

Warum gibt es negetive Abstimmung hier? – Preeti