【问题标题】:TwitteR setup_twitter_oauth() failingTwitteR setup_twitter_oauth() 失败
【发布时间】:2015-09-16 16:08:37
【问题描述】:

我正在关注包的小插图,更新并加载了所有必要的包,这似乎是一个非常简单的身份验证过程。相反,我得到一个错误

> setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)
[1] "Using direct authentication"
Error in check_twitter_oauth() : OAuth authentication error:
This most likely means that you have incorrectly called setup_twitter_oauth()'

我的解释和编辑程序看起来或多或少像这样。

library("twitteR")
download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem") #read this was necessary for Windows machines
consumer_key <- 'abc'
consumer_secret <- 'abc'
access_token <- '123-abc'
access_secret <- 'abc'
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)

我阅读了很多关于这个主题的其他 SO 问题,但没有解决我的问题(其中大多数都使用旧的身份验证过程)。我正在尝试在this tutorial 之后创建一个 wordcloud。

【问题讨论】:

  • 这对我来说过去工作得很好,但我刚刚打开我的脚本并收到同样的错误。你在运行 R 3.2.1 吗?
  • 其实这个问题好像是更新了httr包引起的。一个issue 已经在 TwitteR github repo 上创建,有一个解决方法。
  • @Molx 感谢您提供的信息!解决方法效果很好,我已经使用上面的程序成功地进行了身份验证

标签: r twitter twitter-oauth


【解决方案1】:

只需(安装和)加载包“base64enc”。

【讨论】:

  • 这对我有用。我在 Linux 上遇到了同样的问题,但在 Windows 上没有——只需在 linux 机器上加载库就解决了。
  • 解决了我在 Windows 上的问题。
【解决方案2】:

我必须进行以下设置才能完成这项工作

包版本: base64enc_0.1-3 httr_1.2.1 twitteR_1.1.8

使用命令安装 twitteR: devtools::install_github("jrowen/twitteR", ref = "oauth_httr_1_0")

我有一个现有的应用程序无法运行,所以我继续在 Twitter 上创建了一个新应用程序。

这个组合适合我

【讨论】:

    【解决方案3】:

    只需检查您的防火墙设置并允许 R 通过。

    我尝试了所有提到的关于 packages 等的不同解决方案,但都没有奏效。我终于发现这不过是一个简单的防火墙问题。我建议每个遇到此问题的人首先检查他们的防火墙设置。确保将 R 添加到允许通过防火墙的应用程序列表中。这应该可以解决问题。

    【讨论】:

      【解决方案4】:

      install.packages("base64enc") 为我解决了这个问题。

      【讨论】:

        【解决方案5】:

        我在这里尝试了所有建议,但令人惊讶的是,没有一个对我有用。有人可能会遇到与我相同的情况,所以我回答了对我有用的问题-似乎问题出在直接身份验证上,因此我按照以下步骤(这需要安装 openssl 软件包)并与twitteR 包一起加载;

        确保您已创建 twitter API 并拥有 consumerkey 和 consumerSecret 代码,并且最好使用您的默认网络浏览器保持登录到 twitter

        packages <- c("twitteR", "openssl")
        ### checking if packages are already installed and installing if not
        for(i in packages){
            if(!(i %in% installed.packages()[, "Package"])){
                install.packages(i)
            }
        library(i, character.only = TRUE) ## load packages
        }
        
        setup_twitter_oauth(consumer_key, consumer_secret) ## do not input the access_token and access_secret
        

        这将打开您的默认浏览器并显示成功的身份验证消息。您现在可以关闭浏览器并继续使用 R 浏览推文。

        【讨论】:

          【解决方案6】:

          经过多次尝试,我也遇到了同样的问题。

          我发现了这个问题https://github.com/geoffjentry/twitteR/issues/90,其中“jrowen”提出了解决我问题的解决方法。该问题显然是由新的 httr 包引起的,但解决方法是使用以下命令从 GitHub 而不是 cran 存储库安装 twitteR 包:

          devtools::install_github("jrowen/twitteR", ref = "oauth_httr_1_0")
          

          之后,OAuth认证错误的问题就消失了。希望这也对你有用。

          【讨论】:

          • @AmitKohli 你能更具体一点吗?当您尝试我上面列出的那个时,您看到了什么消息/输出?你在尝试之前遇到了什么?
          • 我得到同样的错误:Error in check_twitter_oauth() : OAuth authentication error: This most likely means that you have incorrectly called setup_twitter_oauth()'。我如何回答这个问题有什么不同吗?:"Using direct authentication" Use a local file to cache OAuth access credentials between R sessions
          • @Alex_Feng 我终于通过重新安装TwitteR的最新开发版本、httr的最新cran版本和base64enc的最新cran版本解决了这个问题。干杯。
          • @AmitKohli 感谢分享。我认为你所做的与我所做的一致。我通过 cran 更新了所有其他软件包,然后通过上面列出的代码(以及这里)安装了 TwitteR 的开发版本:devtools::install_github("jrowen/twitteR", ref = "oauth_httr_1_0")
          【解决方案7】:

          尝试重新生成消费者密钥和 access_token 密钥。我也遇到了类似的问题。没有什么能解决我的问题。但在我重新生成密钥并使用新密钥后,它的解析和工作美感。

          【讨论】:

            【解决方案8】:

            我使用了不同的无线网络(安全性较低),这对我有用

            【讨论】:

              【解决方案9】:

              添加代理解决我的问题 希望这会解决其他一些问题

              如果您已经有代理,则输入以下行:

              proxy_url <- "http://127.0.0.1:61387/"
              Sys.setenv(http_proxy = proxy_url, https_proxy = proxy_url, ftp_proxy = proxy_url)
              

              注意:将设置更改为您自己的设置

              【讨论】:

              • 在我的解决方案中,你需要一个像 psiphon 这样的代理,然后手动将其端口设置为 61387
              【解决方案10】:

              面临同样的问题。然后意识到我没有登录 Twitter(从默认浏览器)。登录 Twitter,一切正常。

              【讨论】:

              • 请检查你的句子
              【解决方案11】:

              我的问题是我的 curl 已过期,因此无法验证它收到的 SSL 证书。我所要做的就是更新 curl(如果您使用的是 anaconda,只需更新 conda update curl)然后 oauth 就可以完美运行。

              【讨论】:

                猜你喜欢
                • 2017-01-03
                • 2013-02-05
                • 2011-08-07
                • 1970-01-01
                • 1970-01-01
                • 2015-02-13
                • 2017-06-23
                • 2013-03-25
                • 1970-01-01
                相关资源
                最近更新 更多