同様の質問が再び出されたことを私は知っています。しかし、私はこことグーグルで見つけたすべてを試しましたが、何もうまくいかないようです。
私のコードは次のとおりです。
_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
これが私のPCのパッケージとバージョンです:
sessionInfo()Rバージョン2.15.1(2012-06-22)プラットフォーム:i386-pc-mingw32/i386(32ビット)
_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
_
どんな助けでも本当に役に立ちます!!
最初に次のことを行ってから、コードを実行します。
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)
Cacert.pemファイルを更新する必要がある場合があります。これに関する他の質問へのリンクについては、 ここ および ここ を参照してください。これは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