2012-01-21 19 views
6

Aquí es lo que estoy tratando de hacer:¿Alguien sabe de algún buen recurso completo para lograr la autenticación de Google mediante Python?

Quiero ser capaz de terminar la "danza OAuth token" y obtener un token de acceso de modo que puedo entonces utilizar eso para conectarse a googles API IMAP para una usuario.

Éstos son mis problemas:

Siento que he intentado casi todo. Intenté utilizar los clientes GDClient, GDataService y Django Social Auth OAuth, pero aún así aparece vacío. Me encontré con escenarios en los que Google construiría la URL de autorización, pero el token de solicitud inicial vuelve vacío, lo que me impide obtener un token de acceso (eso sucedió mientras usaba el GDataClient).

Esto es lo que me gustaría tener:

Un recurso/tutorial/muestra completa de cómo obtener un token de acceso de Google mediante OAuth o OAuth2.0. Estoy bastante seguro de que puedo trabajar con la API IMAP por mi cuenta. Estoy usando el framework django, pero estoy dispuesto a cambiar de eso si hay una mejor opción.

Nota: google tiene buena información en su documentación, pero me parece que está demasiado codificada por el momento. Me encontré mezclando OAuth y OAuth2.0 por eso.

Cualquier ayuda es muy apreciada. Consideraré personalmente que cualquiera que haya realizado la autenticación de google usando OAuth u OAuth2.0 es impresionante, porque lo tendría que hacer si utilizó la documentación que encontré.

Muestra

def index(request): 

    scopes = ['https://docs.google.com/feeds/','https://www.google.com/calendar/feeds/'] 

    client = gdata.docs.client.DocsClient(source='Trinity-EmailManager-v1') 
    client.ssl = True 
    client.http_client.debug = True 

    oauth_callback_url = settings.GOOGLE_CALLBACK_URL 
    request_token = client.GetOAuthToken(
     scopes, oauth_callback_url, settings.GOOGLE_CONSUMER_KEY, consumer_secret=settings.GOOGLE_CONSUMER_SECRET) 

return HttpResponse(request_token) 
+0

Es gracioso (o triste) que este es el primer hit de Google para "GDataService GDclient", así es como llegué aquí. Siento completamente tu dolor La documentación es, por decirlo suavemente, deficiente y confusa. He estado tratando de hacer funcionar la maldita cosa en los últimos días sin éxito hasta ahora, cualquier respuesta útil será muy apreciada. – gsakkis

Respuesta

6

no he hecho en Django, pero lo hice de OpenID parche a través de Google exclusivamente en un proyecto Torres de alta tensión. Acabo de usar Python OpenID. Han pasado unos meses desde que lo preparé, pero parece recordar que la Documentación de Google y la Documentación del paquete OpenID son razonables para ayudarme a superarlo, aunque me llevó bastante superar algunos de los obstáculos. Si mal no recuerdo, el mayor problema fue conseguir que Google me devolviera los datos que quería, que era al configurar correctamente las Solicitudes AX.

En el modelo que estaba usando, configura la solicitud de Autenticación, presenta un enlace al usuario y vuelve a llamar a su página. El objeto de consumo del paquete OpenID fue capaz de tomar el redireccionamiento de Google y analizarlo perfectamente.

¿Puede ser un poco más específico sobre lo que está pasando? Menciona que el token de solicitud estaba vacío, lo que puedo manejar al asumir un problema con la autenticación. ¿No recibes respuesta?

+0

Gracias por responder. Sí, eso es correcto, no recibo ninguna respuesta. Edité mi pregunta para contener una muestra de lo que estoy haciendo. El "request_token" siempre vuelve vacío. Puedo seguir adelante con el resto del proceso construyendo la URL de autorización, pero eso no me lleva a ninguna parte sin ese token de solicitud inicial. – ReBoot

+0

Parece que tiene algo que ver con el paquete gdata. No estoy familiarizado con esto, pero tienen alguna fuente en el directorio Samples que muestra una "forma" de hacer OAuth. Eso funciona para ti? Parece que se utilizan gdata.docs.service.DocsService() en lugar de gdata.docs.client.DocsClient(), pero no estoy seguro de cuál es la diferencia. – Skolor

+1

Gracias, decidí darle otra oportunidad a GDataService y me he autenticado exitosamente con google usando OAuth con la firma RSA-SHA1. – ReBoot

Cuestiones relacionadas