2015-06-21 52 views
16

使用Gmail API。我的客戶機祕密文件已下載並適用於Ruby。當我嘗試了quickstart.py(蟒蛇)版本,我得到這個錯誤Google API quickstart.py錯誤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' 

我沒有改變的文件,同時,剛加入的client_secret.json到工作目錄,並安裝谷歌的API的Python -客戶。我的python代碼來自這裏:https://developers.google.com/gmail/api/quickstart/python

+0

任何適合您的解決方案? – rkatkam

回答

5

oauth2client正試圖從一個json文件加載具有不正確結構的證書。

也許Ruby客戶端使用不同的文件格式,但我會感到驚訝。你確定你不是意外地將保存爲client_secret.json

無論如何,除去~/.credentials/gmail-quickstart.json和重新認證將生成一個新的證書文件,正確的結構。

+0

有用的解釋... +1 –

1

我自己學習Python,並且遇到類似的問題,但是使用Calendar API example。原來,這是一個關於SCOPE的錯字。

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

此外,馬特的回答幫助指向了正確的方向。 gmail-quickstart.json與client_secret.json不同。 client_secret.json允許您爲OAuth2令牌發出請求。雖然gmail-quickstart.json包含與其關聯的已發佈令牌和元數據。直到您成功登錄後纔會創建gmail-quickstart.json。

最後一個思想,爲了成功登錄,則quickstart.py應用推出我的網頁瀏覽器(Firefox)的實例,並去了谷歌登錄屏幕。爲了讓Firefox正常運行,我必須首先正確設置我的DISPLAY變量。

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

我由client_secret.json移動到同一目錄PY文件試圖讀取它(quickstart.py),我的是在桌面上,而我拯救了JSON來的文件解決了這個。我也把json保存到桌面上,男孩,它飛了!

我不知道爲什麼,當他們在不同的目錄下它不工作,定義自定義credential_path於事無補。