2009-03-30 8 views
6

J'essaie de faire en sorte que mon application Django (n'utilisant PAS le moteur de l'application Google) récupère des données de Google Contacts à l'aide de l'API Google Data Data. En passant par authentication documentation ainsi que Data API Python client docsAuthentification de l'API Google Data

La première étape (AuthSubRequest) qui obtient le jeton à usage unique fonctionne correctement. L'étape suivante (AuthSubSessionToken), qui est la mise à niveau du jeton à usage unique vers un jeton de session. L'appel API python UpgradeToSessionToken() ne fonctionnait tout simplement pas pour moi, il m'a donné exception NonAuthSubToken:

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

Comme alternative, je veux le faire fonctionner « manuellement » en construisant la requête HTTP:

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) 

cela me donne une erreur différente:

Erreur HTTP 302: Le serveur HTTP a renvoyé une erreur de redirection qui conduirait à une boucle infinie. Le dernier message d'erreur 30x était: Déplacé temporairement

Qu'est-ce que je fais mal ici? J'apprécierais l'aide/le conseil/les suggestions avec l'une ou l'autre des méthodes que j'essaie d'utiliser: l'appel de l'API Python (UpgradeToSessionToken) ou la construction manuelle de la requête HTTP avec urllib2.

Répondre

4

Selon la documentation 2.0 here il existe un ensemble exemple python ...

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.

Espérons que vous pointera dans la bonne direction.

1

J'ai récemment eu un problème similaire. Le mien a été corrigé en définissant "secure" sur "true".

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

Je vous remercie pour votre suggestion, je vais essayer –

1

Il existe quatre façons de s'authentifier. Est-ce vraiment important pour vous d'utiliser AuthSub? Si vous ne parvenez pas à utiliser AuthSub, prenez en compte l'approche ClientLogin. Je n'ai eu aucun problème à le faire fonctionner.

+0

pourquoi il ya un vote negetive ici? – Preeti