使用Gmail API。我的客户端机密文件已经下载并为Ruby工作。当我尝试quickstart.py(python)版本时,我会得到这个错误
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添加到该工作目录中,还安装了google api python客户端。我的python代码来自这里:https://developers.google.com/gmail/api/quickstart/python
oauth2client试图从结构不正确的json文件加载凭据。
也许Ruby客户端使用了不同的文件格式,但我会感到惊讶。你确定你没有意外地将
client_secret.json
保存为~/.credentials/gmail-quickstart.json
?无论如何,删除
~/.credentials/gmail-quickstart.json
并重新验证将生成具有正确结构的新凭据文件。我自己也在学习Python,也遇到了类似的问题,但是使用Calendar API example。结果发现这是一个关于范围的打字错误。
另外,马特的回答帮助我指出了正确的方向。gmail-quickstart.json与client_secret.json不是一回事。client_secret.json允许您请求OAuth2令牌。而gmail-quickstart.json包含已颁发的令牌和与其关联的元数据。gmail-quickstart.json在您成功登录之前不会创建。
最后一个想法是,为了成功登录,quickstart.py应用程序启动了我的web浏览器(Firefox)的一个实例,并转到Google登录屏幕。为了让Firefox正常运行,我必须首先正确设置显示变量。
尝试暂时用
creds = None
替换creds = store.get()
。如果这有效,您可以重构代码以始终从基于流的凭据实例化开始。这对我有效。看起来Google的示例与oauth2client不同步。相关问题 更多 >
编程相关推荐