2013-03-11 10 views
17

में twitteR के लिए विफल रहा मुझे पता है कि इसी तरह के प्रश्न फिर से पूछे गए हैं। हालांकि, मैंने यहां और Google पर जो कुछ भी पाया है, मैंने कोशिश की है और मेरे लिए कुछ भी काम नहीं करता है।एसएसएल प्रमाणपत्र आर

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 

किसी भी मदद वास्तव में उपयोगी होगा !!

+0

संभव डुप्लिकेट: http://stackoverflow.com/q/9916283/1036500 (मैं यह काम या तो ... नहीं कर सके) – Ben

+0

बस व्यामोह का एक सा जोड़ने के लिए: हर एसएसएल प्रमाणपत्र विफलता एक प्रोग्रामिंग त्रुटि है, उनमें से कुछ वास्तविक हमले हैं (यानी आपके नियोक्ता, सरकार या अन्य तृतीय पक्ष एक अवैध प्रमाणपत्र को प्रतिस्थापित कर रहे हैं)। क्या ट्विटर आपके लिए Google क्रोम में ठीक काम करता है? – themel

+0

हां यह करता है, ऐसा क्यों नहीं होना चाहिए? – Stergios

उत्तर

1

आप अपने cacert.pem फ़ाइल अद्यतन करने की आवश्यकता हो सकती है। इसके बारे में अन्य प्रश्नों के लिंक के लिए here और here देखें। मुझे लगता है कि यह download.file() का उपयोग कर अन्य लोगों के लिए काम नहीं किया है, लेकिन यह सीधे कर्ल का उपयोग कर सकता है। तुम इतनी तरह अपने बंडल फ़ाइल को अपडेट कर सकते हैं:

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

साइमन धन्यवाद लेकिन यह मेरे लिए काम नहीं कर रहा है। ट्विटर एपीआई के साथ इतने सारे लोगों को एक ही समस्या क्यों है? कुछ और मैं कोशिश कर सकता था? – Stergios

17

पहले निम्न कार्य करें, और फिर अपने कोड चलाएँ:

library(RCurl) 

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

यह आमतौर पर आपकी समस्या का निवारण कर रहे थे ठीक कर दे।

संपादित करें (अगस्त 2014):या बेहतर अभी तक, बजाय httr पैकेज का उपयोग करने के

2

(जो उपयोगी डिफ़ॉल्ट विकल्प आपके लिए सेट के साथ 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) 
संबंधित मुद्दे