2012-01-21 16 views
6

Ecco quello che sto cercando di fare:Qualcuno sa di buone risorse complete per ottenere l'autenticazione google usando python?

Voglio essere in grado di finire la "OAuth ballo gettone" e ottenere un token di accesso in modo da poter poi usare che per la connessione a googles IMAP api per un utente.

Qui sono i miei problemi:

mi sento come se ho provato quasi tutto. Ho provato a utilizzare i client OAuth di GDClient, GDataService e Django Social Auth, ma sono ancora vuoto. Mi sono imbattuto in scenari in cui Google avrebbe creato l'URL di autorizzazione, ma il token di richiesta iniziale restituisce vuoto, impedendomi di ottenere un token di accesso (che è successo mentre stavo usando GDataClient).

Ecco quello che vorrei avere:

Una risorsa/tutorial/esempio completo di come ottenere un token di accesso da parte di Google tramite OAuth o OAuth2.0. Sono abbastanza sicuro di poter utilizzare l'API IMAP da solo. Sto usando il framework django, ma sono disposto a passare da quello se c'è un'opzione migliore.

Nota: Google ha una buona informazione nella loro documentazione, ma mi sento come se fosse troppo criptato al momento. Mi sono ritrovato a mixare OAuth e OAuth2.0 per questo.

Qualsiasi aiuto è molto apprezzato. Prenderò in considerazione personalmente chiunque abbia realizzato l'autenticazione google utilizzando OAuth o OAuth2.0, perché dovresti esserlo se hai utilizzato la documentazione che ho trovato.

Esempio

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

È divertente (o triste) che questo sia il primo hit di Google per "GDataService GDclient", ecco come sono arrivato qui. Sento completamente il tuo dolore La documentazione è, per dirla in modo gentile, carente e confusa. Ho cercato di far funzionare il maledetto lavoro negli ultimi giorni senza successo fino ad ora, qualsiasi risposta utile sarà molto apprezzata. – gsakkis

risposta

6

non l'ho fatto in Django, ma ho fatto OpenID patch tramite Google esclusivamente in un progetto Piloni. Ho appena usato Python OpenID. Sono passati alcuni mesi da quando l'ho inventato, ma mi sembra di ricordare che la documentazione di Google e il pacchetto Documentazione per OpenID siano ragionevoli per farcela, anche se ci sono voluti un po 'per superare alcuni ostacoli. Se ricordo bene, il problema più grande è stato far sì che Google mi restituisse i dati che volevo, che consistevano nell'impostare correttamente le richieste AXE.

Nel modello che stavo utilizzando, si imposta la richiesta di autenticazione, si presenta un collegamento all'utente e si richiama alla propria pagina. L'oggetto consumatore dal pacchetto OpenID è stato in grado di prendere il reindirizzamento da Google e analizzarlo bene allora.

Puoi essere un po 'più specifico su cosa sta succedendo? Lei dice che il token di richiesta era vuoto, che gestisco assumendo un problema con l'autenticazione. Non ricevi alcuna risposta?

+0

Grazie per la risposta. Sì, è corretto, non ho alcuna risposta. Ho modificato la mia domanda per contenere un campione di ciò che sto facendo. "Request_token" torna sempre vuoto. Posso portare avanti il ​​resto del processo costruendo l'URL di autorizzazione ma questo non mi porta da nessuna parte senza quel token di richiesta iniziale. – ReBoot

+0

Sembra quindi qualcosa a che fare con il pacchetto gdata. Non ho familiarità con esso, ma hanno qualche fonte nella directory Samples che mostra "un" modo di fare OAuth. Funziona per te? Sembra che abbiano usato gdata.docs.service.DocsService() invece di gdata.docs.client.DocsClient(), ma non sono sicuro di quale sia la differenza. – Skolor

+1

Grazie, ho deciso di dare a GDataService un altro tentativo e mi sono autenticato con successo con google utilizzando OAuth con la firma RSA-SHA1. – ReBoot

Problemi correlati