使用 Python httplib2/oauth2 查询 Twitter API 时出现 SSL 握手错误

标签 ssl twitter oauth-2.0 httplib2

我正在使用 Ouath2 在 Python 中对 Twitter 进行身份验证,并使用客户端对象查询 Twitter API(这会自动签署请求,它是 httplib2 的扩展)

这是代码的简化版本:

import oauth2 as oauth

# authenticate
consumer = oauth.Consumer(consumer_key, consumer_secret)
token = oauth.Token(token_key, token_secret)
client = oauth.Client(consumer, token)

# request url
info, data = client.request('https://api.twitter.com/1.1/statuses/user_timeline.json?count=50&max_id=999999999999999999&screen_name=audiuk&since_id=643822673450168322', 'GET')
print data

在我的本地环境中这工作正常,在生产中我得到这个错误:

2015-09-22 15:19:42 ERROR    SSLHandshakeError ([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)) encountered for https://api.twitter.com/1.1/statuses/user_timeline.json?count=50&max_id=999999999999999999&screen_name=audiuk&since_id=643822673450168322, aborting

我正在使用 Python 2.7.9。

谢谢。

最佳答案

在您部署的版本中,httplib2 证书似乎已过期(我也遇到过)
如果您不想像我一样更新整个库,请尝试将 cacerts.txt 替换为 last version

1- 获取您拥有此文件的路径:

>>> import httplib2
>>> httplib2.__file__
'/usr/local/lib/python2.7/dist-packages/httplib2/__init__.pyc'

2- Mv 进入目录并重命名旧的 cacerts.txt

mv cacerts.txt cacerts.txt.old

3- 获取新版本并享受 oauth2

wget https://raw.githubusercontent.com/jcgregorio/httplib2/master/python2/httplib2/cacerts.txt

关于使用 Python httplib2/oauth2 查询 Twitter API 时出现 SSL 握手错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32723197/

相关文章:

python - 使用 Python 的 SSL3 POST

node.js - Node JS 中的 FIWARE OAuth2 身份验证

Perl Oauth2 包

java - Weblogic主机名验证异常

security - 即使在客户端禁用 TLS 1.2 后,Java 1.8 客户端和以 FIPS 模式运行的 Java 1.7 TLS 1.1 服务器之间的 TLS 握手失败

php - abraham 的 twitteroauth 库是否适用于 update_with_media?

ios - 在 Swift 中使用 TWTRShareEmailViewController (Fabric Twitter SDK) 请求用户 Twitter 邮件

ios - MDM 管理的 iOS 设备上推荐的身份验证流程

docker - 如何使用带有 Nginx 镜像的 Docker 实现 (Certbot) ssl

twitter - 在网页中嵌入 Twitter 提要和对我的回复