2015-06-21 19 views
16

Utilizzo dell'API Gmail. Il mio file segreto del client viene scaricato e funziona per Ruby. Quando provo la versione quickstart.py (python) ottengo questo erroreErrore quickstart.py API Google Errore Chiave: '_module'

File "quickstart.py", line 70, in <module> 
    main() 
    File "quickstart.py", line 55, in main 
    credentials = get_credentials() 
    File "quickstart.py", line 38, in get_credentials 
    credentials = store.get() 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 374, in get 
    return self.locked_get() 
    File "/Library/Python/2.7/site-packages/oauth2client/file.py", line 79, in locked_get 
    credentials = Credentials.new_from_json(content) 
    File "/Library/Python/2.7/site-packages/oauth2client/client.py", line 281, in new_from_json 
    module = data['_module'] 
KeyError: '_module' 

Non ho cambiato il file a tutti, appena aggiunto la client_secret.json a quella directory di lavoro e installare anche il google-api-python -cliente. Il mio codice Python proviene da qui: https://developers.google.com/gmail/api/quickstart/python

+0

Qualche soluzione che ha funzionato per te? – rkatkam

risposta

5

oauth2client sta tentando di caricare le credenziali da un file JSON con una struttura errata.

Forse il client Ruby utilizza un formato di file diverso ma sarei sorpreso. Sei sicuro di non aver salvato client_secret.json come ~/.credentials/gmail-quickstart.json accidentalmente?

Indipendentemente dalla rimozione di ~/.credentials/gmail-quickstart.json e la nuova autenticazione genererà un nuovo file di credenziali con la struttura corretta.

+0

Spiegazione utile ... +1 –

1

Sto imparando da solo Python e ho avuto un problema simile, ma con il Calendar API example. Si è scoperto che si trattava di un errore di battitura nei riguardi del CAMPO DI APPLICAZIONE.

## Typo - Invalid definition 
SCOPES = 'https://ww.googleapies.com/auth/calendar.readonly' 
## Correct Value for SCOPE 
SCOPES = 'https://www.googleapis.com/auth/calendar' 

Inoltre, la risposta di Matt aiuta a indicarmi la giusta direzione. Gmail-quickstart.json non è la stessa cosa di client_secret.json. Il client_secret.json consente di effettuare una richiesta per un token OAuth2. Mentre gmail-quickstart.json contiene il token emesso e i metadati ad esso associati. Gmail-quickstart.json non viene creato fino a quando non si accede correttamente.

Un ultimo pensiero, al fine di accedere correttamente, l'applicazione quickstart.py ha lanciato un'istanza del mio browser web (Firefox) ed è andato alla schermata di accesso di Google. Per far funzionare correttamente Firefox, ho dovuto impostare correttamente la mia variabile DISPLAY.

$ export DISPLAY=:0 
$ xhost + 
access control disabled, clients can connect from any host 
1

Ho risolto questo spostando il client_secret.json nella stessa directory del file py che sta cercando di leggerlo (quickstart.py), il mio era sul desktop, mentre io avevo salvato la JSON ai documenti. Ho salvato il json sul desktop e ragazzo, ha volato !.

Non so perché non funziona quando si trovano in directory diverse, la definizione di un percorso credenziale personalizzato non aiuta.

Problemi correlati