2013-03-11 39 views
17

Tôi biết các câu hỏi tương tự đã được hỏi lại. Tuy nhiên, tôi đã thử tất cả mọi thứ tôi tìm thấy ở đây và trên google và không có gì có vẻ làm việc cho tôi.Chứng chỉ SSL không thành công cho twitteR trong R

Mã của tôi là như sau:

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) 

Ở đây tôi nhận được: [1] TRUE

Nhưng nếu tôi cố gắng này: tweets = searchTwitter('blabla', n=1500)

tôi nhận được lỗi sau: [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

Dưới đây là các gói và tính năng Tiện ích trên máy tính của tôi:

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 

Bất kỳ trợ giúp sẽ được thực sự hữu ích !!

+0

thể trùng lặp: http://stackoverflow.com/q/9916283/1036500 (Tôi không thể làm cho nó làm việc, hoặc ...) – Ben

+0

Chỉ cần thêm một chút hoang tưởng: Không EVERY Lỗi chứng chỉ SSL là lỗi lập trình, một số trong số đó là các cuộc tấn công thực sự (tức là chủ lao động, chính phủ hoặc bên thứ ba khác thay thế chứng chỉ không hợp lệ). Twitter có hoạt động tốt trong Google Chrome cho bạn không? – themel

+0

Vâng, tại sao phải không? – Stergios

Trả lời

1

Bạn có thể cần cập nhật tệp cacert.pem của mình. Xem herehere để biết các liên kết đến các câu hỏi khác liên quan đến vấn đề này. Tôi thấy điều này đã không làm việc cho những người khác sử dụng download.file(), nhưng điều này có thể sử dụng Curl trực tiếp. Bạn có thể cập nhật tập tin bó của bạn như vậy:

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

+0

Cảm ơn Simon nhưng nó dường như không làm việc cho tôi. Tại sao rất nhiều người có cùng một vấn đề với API twitter? Cái gì khác tôi có thể thử? – Stergios

17

Làm như sau đầu tiên, và sau đó chạy mã của bạn:

library(RCurl) 

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

này thường khắc phục được những vấn đề mà bạn đã trải qua.

EDIT (tháng 8 năm 2014):Hoặc tốt hơn, cố gắng sử dụng các gói httr thay vì (mà là một wrapper thân thiện của RCurl với các tùy chọn mặc định hữu ích thiết cho bạn)

2

cuối cùng tôi đã nhận giải pháp , hãy thử phương pháp này. này là rất dễ dàng

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) 
Các vấn đề liên quan