2009-03-30 41 views
6

Estoy tratando de obtener mi aplicación Django (NO utilizando el motor de la aplicación de Google) para recuperar datos de Contactos de Google utilizando la API de Datos de Contactos de Google. Pasando por authentication documentation así como Data API Python client docsAutenticación de Google Data API

El primer paso (AuthSubRequest) que obtiene el token de uso único funciona bien. El siguiente paso (AuthSubSessionToken), que es actualizar token de uso único a un token de sesión. La llamada a la API Python UpgradeToSessionToken() simplemente no funcionó para mí que me dio excepción NonAuthSubToken:

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

Como alternativa Quiero conseguir que funcione por "manualmente" la construcción de la petición 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) 

esto me da un error diferente:

HTTP Error 302: El servidor HTTP devolvió un error de redirección que daría lugar a un bucle infinito. El último mensaje de error de 30x fue: Movido temporalmente

¿Qué estoy haciendo mal aquí? Agradecería ayuda/consejo/sugerencias con cualquiera de los métodos que estoy tratando de usar: llamada API de Python (UpgradeToSessionToken) o construcción manual de solicitud HTTP con urllib2.

Respuesta

4

De acuerdo con la documentación 2.0 here hay un conjunto ejemplo de pitón ...

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.

de esperar que se le apuntan en la dirección correcta.

1

Tuve un problema similar recientemente. El mío se corrigió configurando "seguro" a "verdadero".

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

Gracias por su sugerencia, lo probaré –

1

Existen cuatro formas diferentes de autenticarse. ¿Es realmente tan importante para ti usar AuthSub? Si no puede hacer que AuthSub funcione, considere el enfoque ClientLogin. No tuve problemas para hacer que eso funcione.

+0

¿por qué hay voto negativo aquí? – Preeti