2013-03-11 20 views
17

Benzer soruları tekrar sordum biliyorum. Ancak, burada ve google'da bulduğum her şeyi denedim ve hiçbir şey benim için çalışmıyor gibi görünüyor.SSL sertifikası twitteR için başarısız oldu R

İşte
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) 

alıyorum:

Kodum şudur [1] TRUE

Ama denemek eğer bu: tweets = searchTwitter('blabla', n=1500)

aşağıdaki hatayı alıyorum: [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

İşte paketler ve versi Benim PC'de ons:

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 

Herhangi yardıma gerçekten faydalı olacaktır !!

+0

olası yinelenen: http://stackoverflow.com/q/9916283/1036500 (Ben ... Ya işe gelemedi) – Ben

+0

Sadece paranoya biraz eklemek için: Değil HER SSL sertifikası arızası bir programlama hatasıdır, bazılarının gerçek saldırıları vardır (örn. Işvereniniz, hükümetiniz veya geçersiz bir sertifikayı değiştiren diğer üçüncü taraflar). Twitter, Google Chrome'da sizin için iyi çalışıyor mu? – themel

+0

Evet öyle, neden olmasın? – Stergios

cevap

1

cacert.pem dosyanızı güncellemeniz gerekebilir. Bununla ilgili diğer soruların linkleri için bkz. here ve here. Bunun download.file()'u kullanan diğer insanlar için işe yaramadığını görüyorum, ancak bu doğrudan Curl'i kullanabilir.

+0

Teşekkürler Simon ama benim için işe yaramıyor. Neden bu kadar çok insan twitter API ile aynı sorunu yaşıyor? Başka deneyebilir miyim? – Stergios

17

öncelikle aşağıdakileri yapın

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 ve sonra kod çalıştırmasına: Çok sevdiği paketi dosyası güncelleyebilirsiniz

library(RCurl) 

# Set SSL certs globally 
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))) 

Bu genellikle karşılaştığınız sorunu düzeltir.

DÜZENLEME (Ağustos 2014):Ya da daha iyisi,

2

(sizin için belirlediği kullanışlı varsayılan seçenekleri ile RCurl bir dost sarıcı olan) yerine HTTR paketini kullanmayı deneyin sonunda ben çözüm var lütfen bu yöntemi deneyin. Bu çok kolaydır

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) 
İlgili konular