python foursquare - SSL3证书验证失败

use*_*277 9 python ssl ssl-certificate foursquare

我正在尝试使用Mike Lewis的Python包装器向Foursquare API发出无用户请求 - https://github.com/mLewisLogic/foursquare:

client = foursquare.Foursquare(client_id=Client_ID, client_secret=Client_Secret)
categs = client.venues.categories()
Run Code Online (Sandbox Code Playgroud)

间歇性地,我得到一个"错误连接到Foursquare API"的消息.运行记录器以捕获更详细的消息会产生:

"SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败"

在我的本地Windows开发机器和运行ubuntu的服务器上都没有发生这种情况.我是否遗漏了一些关于安全证书的基本内容?这个问题是间歇性的,有时候只需要一分钟就可以重试并暂时修复问题.

我已经下载了最新的20120716版本的包装器,尽管在init.py的代码中它仍然说API_VERSION ='20120608'.我正在使用Python 2.73并且还使用上面代码中的id和secret注册了Foursquare API密钥.我列出了网址,使用我的本地IP:8000并尝试使用单独的密钥用于本地和开发机器,但这似乎没有区别.

非常感谢.谢谢.

edd*_*xie 23

我昨天遇到了完全相同的问题.我搜索了很多并尝试了很多,似乎以下策略适用于我的情况(我不是100%肯定,但它不再报告错误).

1)下载http://curl.haxx.se/ca/cacert.pem

wget http://curl.haxx.se/ca/cacert.pem
Run Code Online (Sandbox Code Playgroud)

2)转到Python httplib2目录.我在 /usr/local/lib/python2.7/dist-packages/httplib2

cd /usr/local/lib/python2.7/dist-packages/httplib2
Run Code Online (Sandbox Code Playgroud)

3)备份当前证书

cp cacerts.txt backup_cacerts.txt
Run Code Online (Sandbox Code Playgroud)

4)然后将下载的文件复制到那里并重命名为 cacerts.txt

mv cacert.pem cacerts.txt
Run Code Online (Sandbox Code Playgroud)

而已.

希望能帮助到你.如果没有从备份文件中恢复并尝试其他方法.

我改变了这个后,我的foursquare脚本工作正常:)

  • 它只是我还是通过http下载这样的东西对其他人来说似乎很奇怪? (4认同)