R证书中的twitteR SSL证书失败
我知道类似的问题已被再次询问。不过,我尝试了我在这里和谷歌上找到的所有东西,而且似乎没有任何东西可以用于我。R证书中的twitteR SSL证书失败
我的代码如下:
reqURL <- "http://api.twitter.com/oauth/request_token"
accessURL <- "http://api.twitter.com/oauth/access_token"
authURL <- "http://api.twitter.com/oauth/authorize"
consumerKey <- "xxxxxxxxxxx"
consumerSecret <- "xxxxxxxxxxxxxxxxxxx"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
twitCred$handshake(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))
registerTwitterOAuth(twitCred)
在这里,我得到: [1] TRUE
但如果我试试这个: tweets = searchTwitter('blabla', n=1500)
我收到以下错误: [1] "SSL certificate problem, verify that the CA cert is OK. Details:\nerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed" Error in twInterfaceObj$doAPICall(cmd, params, "GET", ...) : Error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
这里是包和版本插件在我的电脑:
sessionInfo() R version 2.15.1 (2012-06-22) Platform: i386-pc-mingw32/i386 (32-bit)
locale:
[1] LC_COLLATE=Greek_Greece.1253 LC_CTYPE=Greek_Greece.1253
[3] LC_MONETARY=Greek_Greece.1253 LC_NUMERIC=C
[5] LC_TIME=Greek_Greece.1253
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] ROAuth_0.9.2 digest_0.6.2 twitteR_1.1.0 rjson_0.2.12
[5] RCurl_1.95-4.1 bitops_1.0-5
loaded via a namespace (and not attached):
[1] tools_2.15.1
任何帮助将是非常有用的!
您可能需要更新您的cacert.pem文件。有关此问题的其他问题的链接,请参阅here和here。我发现这对于使用download.file()
的其他人无效,但这可能会直接使用Curl。您可以更新包文件,像这样:
system(paste0("curl http://curl.haxx.se/ca/cacert.pem -o " , tempdir() , "/cacert.pem"))
#Then you can use it like so
twitCred$handshake(cainfo = paste0(tempdir() , "/cacert.pem"))
HTH
谢谢西蒙,但它似乎并没有为我工作。为什么这么多人与twitter API有同样的问题?还有什么我可以尝试? – Stergios 2013-03-14 20:59:07
先做下面,然后运行代码:
library(RCurl)
# Set SSL certs globally
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
这通常纠正您遇到的问题有关。
编辑(2014年8月):或者更好的是,尝试使用HTTR软件包,而不是(这是RCurl与为您设置有用默认选项友好包装)
我终于得到了解决请尝试这种方法。这是很容易
library(devtools)
install_github("twitteR", username="geoffjentry")
library(twitteR)
api_key = "aaa"
api_secret = "bbb"
access_token = "ccc"
access_token_secret = "ddd"
setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)
可能重复:http://*.com/q/9916283/1036500(我不能让它工作,要么...) – Ben 2013-03-11 20:04:11
我想补充一点偏执的:不是每一个SSL证书失败是一种编程错误,其中一些是实际的攻击(即您的雇主,*或其他第三方替换无效证书)。 Twitter是否可以在Google Chrome中为您工作? – themel 2013-03-19 05:39:38
是的,为什么不呢? – Stergios 2013-03-19 17:15:42