Google API quickstart.py错误键错误:'\u模块'

2024-06-07 07:17:05 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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


Tags: inpyclientjson客户端getpackagesline
3条回答

oauth2client试图从结构不正确的json文件加载凭据。

也许Ruby客户端使用了不同的文件格式,但我会感到惊讶。你确定你没有意外地将client_secret.json保存为~/.credentials/gmail-quickstart.json

无论如何,删除~/.credentials/gmail-quickstart.json并重新验证将生成具有正确结构的新凭据文件。

我自己也在学习Python,也遇到了类似的问题,但是使用Calendar API example。结果发现这是一个关于范围的打字错误。

## 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应用程序启动了我的web浏览器(Firefox)的一个实例,并转到Google登录屏幕。为了让Firefox正常运行,我必须首先正确设置显示变量。

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

尝试暂时用creds = None替换creds = store.get()。如果这有效,您可以重构代码以始终从基于流的凭据实例化开始。这对我有效。看起来Google的示例与oauth2client不同步。

相关问题 更多 >