2015-06-21 15 views
16

Sử dụng API Gmail. Tệp khách hàng bí mật của tôi được tải xuống và làm việc cho Ruby. Khi tôi thử (python) phiên bản quickstart.py tôi nhận được lỗi nàyLỗi API nhanh chóng của Google API KeyError: '_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' 

tôi đã không thay đổi các tập tin ở tất cả, chỉ cần thêm các client_secret.json đến thư mục đó làm việc và cũng cài đặt google-api-python -client. Mã python của tôi xuất phát từ đây: https://developers.google.com/gmail/api/quickstart/python

+0

Bất kỳ giải pháp nào phù hợp với bạn? – rkatkam

Trả lời

5

oauth2client đang cố tải thông tin xác thực từ tệp json có cấu trúc không chính xác.

Có thể ứng dụng khách Ruby sử dụng định dạng tệp khác nhưng tôi sẽ ngạc nhiên. Bạn có chắc chắn bạn không lưu client_secret.json~/.credentials/gmail-quickstart.json không?

Bất kể, xóa ~/.credentials/gmail-quickstart.json và xác thực lại sẽ tạo tệp xác thực mới có cấu trúc chính xác.

+0

Giải thích hữu ích ... +1 –

1

Tôi tự học Python và gặp vấn đề tương tự, nhưng với số Calendar API example. Hóa ra đó là lỗi đánh máy liên quan đến PHẠM VI.

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

Ngoài ra, câu trả lời của Matt giúp tôi đi đúng hướng. Gmail-quickstart.json không giống với client_secret.json. Client_secret.json cho phép bạn thực hiện yêu cầu cho mã thông báo OAuth2. Mặc dù gmail-quickstart.json chứa mã thông báo đã phát hành và siêu dữ liệu được liên kết với nó. Gmail-quickstart.json không được tạo cho đến khi bạn đăng nhập thành công.

Một ý nghĩ cuối cùng, để đăng nhập thành công, ứng dụng quickstart.py đã khởi chạy một phiên bản trình duyệt web của tôi (Firefox) và truy cập màn hình đăng nhập Google. Để Firefox chạy đúng cách, trước tiên tôi phải đặt biến DISPLAY của mình.

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

tôi giải quyết này bằng cách di chuyển client_secret.json để cùng thư mục với file py đang cố gắng đọc nó (quickstart.py), mỏ là trên Desktop trong khi tôi đã lưu json để Documents. Tôi đã lưu các json vào máy tính để bàn quá và cậu bé, Nó bay !.

Tôi không biết tại sao nó không hoạt động khi chúng ở trong các thư mục khác nhau, việc xác định thông tin xác thực tùy chỉnh không giúp ích gì.