gpt4 book ai didi

使用 R 在 Windows 上进行 ROauth

转载 作者:行者123 更新时间:2023-12-04 10:42:51 25 4
gpt4 key购买 nike

我搜索了 SO 并看到了一些关于该主题的问题,但我没有找到任何与 Windows 直接相关的内容(我之前的帖子是针对 Linux 的)。

更具体地说,我想使用 twitteR 包,但我无法让身份验证工作。到目前为止,我可以访问其他机器,但是这一次,我需要完全留在 Windows 中。我怎样才能解决这个问题?

这是错误:

Error in curlPerform(curl = curl, URL = url, postfields = fields, writefunction = reader$update,  : 
SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

编辑:生成那个的代码......来自 twitteR 包的文档
cred <- OAuthFactory$new(consumerKey = KEY, 
consumerSecret = SECRET,
requestURL = "https://api.twitter.com/oauth/request_token",
accessURL = "https://api.twitter.com/oauth/access_token",
authURL = "https://api.twitter.com/oauth/authorize")
cred$handshake()

最佳答案

2013 年 5 月更新

看到我一直看到人们在 Windows 上提到这些问题,如果您在运行 R 脚本之前执行以下操作,它应该会自动解决问题,而您无需在本文中执行任何其他操作:

library(RCurl) 
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

这将全局设置选项并将用于所有 RCurl 调用。

我将在下面留下帖子的其余部分以供引用。

注意:这不是一个直接的解决方案,但对于评论或#rstats 推文来说也太长了......

读取输出,问题似乎出在 cURL(以及包 RCurl)上。我可以使用 RCurl_1.6-10 在带有 R2.14.0 的 Windows 7 x64 Pro 上为发生在我身上的不同应用程序重新创建相同的错误:
library(RCurl)
u <- "https://raw.github.com/tonybreyal/Blog-Reference-Functions/master/R/bingSearchXScraper/bingSearchXScraper."
x <- getURL(u)
#Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
# SSL certificate problem, verify that the CA cert is OK. Details:
#error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

错误代码是一样的。在您的情况下,这意味着 Twitter 正在向您发送证书,告诉您它们是真正的 Twitter 网站。但是你怎么知道他们说的是实话呢?在您系统的某个地方,您需要有一个可以确认它的文件,该文件是从可信来源获得的。

一种解决方案是按如下方式获取该文件以解决问题(注意,还有其他网站提供此类文件,我使用了官方 cURL 网站):
download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")
x <- getURL(u, cainfo = "cacert.pem")

我没有看过 ROAuth 的内部结构(用 S3/S4/Reference-classes 编写的任何东西都吓到我了)但在某些时候它需要设置 cainfo 参数来克服这个问题(在 Windows 上是 -对于我上面的示例,似乎在 Ubuntu 上运行良好)。我不知道 ROAuth 是否允许用户以某种方式添加这些 curl 参数,但这将是解决它的方法。

希望能有所帮助。

托尼·布雷亚尔

附言另一种方法是可能的,并避免从 cURL 下载证书,但不推荐用于您正在做的事情类型(说真的,为了您使用 twitter 的目的,我建议不要在这个大时代):
x <- getURL(u, ssl.verifypeer = FALSE)

2011 年更新:

这似乎适用于跨平台(好吧,无论如何,Ubuntu 和 Windows)并且不需要您直接下载 SSL 证书,因为 RCurl 已经随附了它们:
 x <- getURL(u, cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))

关于使用 R 在 Windows 上进行 ROauth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com