Pertanyaan Google quickstart.py error KeyError: '_module'


Menggunakan API Gmail. File rahasia klien saya diunduh dan berfungsi untuk Ruby. Ketika saya mencoba versi quickstart.py (python) saya mendapatkan kesalahan ini

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'

Saya belum mengubah file sama sekali, hanya menambahkan client_secret.json ke direktori kerja itu dan juga menginstal google-api-python-client. Kode python saya berasal dari sini: https://developers.google.com/gmail/api/quickstart/python 


25
2018-06-21 16:40


asal


Jawaban:


oauth2client mencoba memuat kredensial dari file json dengan struktur yang salah.

Mungkin klien Ruby menggunakan format file yang berbeda tetapi saya akan terkejut. Apakah Anda yakin Anda tidak menyimpan client_secret.json sebagai ~/.credentials/gmail-quickstart.json tanpa sengaja?

Apapun, hapus ~/.credentials/gmail-quickstart.json dan mengautentikasi ulang akan menghasilkan file kredensial baru dengan struktur yang benar.


10
2017-07-12 13:45



Saya belajar Python sendiri dan memiliki masalah yang sama, tetapi dengan Contoh Kalender Kalender. Ternyata itu salah ketik berkaitan dengan RUANG LINGKUP.

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

Juga, jawaban Matt membantu mengarahkan saya ke arah yang benar. The gmail-quickstart.json tidak sama dengan client_secret.json. Client_secret.json memungkinkan Anda mengajukan permintaan untuk token OAuth2. Sementara gmail-quickstart.json berisi token yang diterbitkan dan meta-data yang terkait dengannya. Gmail-quickstart.json tidak dibuat sampai Anda berhasil masuk.

Satu pemikiran terakhir, agar berhasil masuk, aplikasi quickstart.py meluncurkan instance dari browser web saya (Firefox) dan masuk ke layar login Google. Agar Firefox dapat berjalan dengan baik, saya harus mengatur variabel DISPLAY dengan benar terlebih dahulu.

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

1
2017-10-21 12:09



Saya memecahkan ini dengan memindahkan client_secret.json ke direktori yang sama dengan file py yang mencoba membacanya (quickstart.py), milik saya ada di Desktop saat saya menyimpan json ke Dokumen. Saya menyimpan json ke Desktop juga dan anak laki-laki, Ini terbang !.

Saya tidak tahu mengapa itu tidak bekerja ketika mereka berada di direktori yang berbeda, mendefinisikan custom credential_path tidak membantu.


1
2017-10-27 09:02



Coba ganti creds = store.get() dengan creds = None untuk sementara. Jika ini berhasil, Anda dapat mem-refactor kode Anda untuk selalu memulai dengan instantiasi kredensial berbasis aliran. Ini berhasil bagi saya. Tampaknya sampel Google tidak sinkron dengan oauth2client mereka.


1
2018-05-11 10:03