访问Twitter API时出现Authorization Required错误

时间:2014-12-09 13:14:50

标签: r twitter

我在教程中找到了以下代码,但在执行此握手命令后,它给出了以下错误:

Error: Authorization Required

你能帮我解决这个问题吗?

library(twitteR)
library(ROAuth)

        reqURL <- "https://api.twitter.com/oauth/request_token"
        accessURL <- "http://api.twitter.com/oauth/access_token"
        authURL <- "http://api.twitter.com/oauth/authorize"
        consumerKey <- "-----------------"
        consumerSecret <- "-----------------------------"
        twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                         consumerSecret=consumerSecret,
                         requestURL=reqURL,
                         accessURL=accessURL,
                         authURL=authURL)
        download.file(url="http://curl.haxx.se/ca/cacert.pem",
          destfile="cacert.pem")
       twitCred$handshake(cainfo = system.file("CurlSSL", "cacert.pem",
               package = "RCurl"))

2 个答案:

答案 0 :(得分:4)

如果您使用的是twitteR(1.1.7)的CRAN版本,请尝试使用GitHub版本(1.1.8)。

1.1.8版本使用httr而不是ROAuth,这可能会有所帮助 link

从GitHub下载:

library(devtools)
library(httr)
install_github("twitteR", username = "geoffjentry")
library(twitteR)

您可能会收到警告消息: 不推荐使用Username参数。请使用geoffjentry / twitteR

但你无论如何都应该在你的图书馆里找到twitteR。

然后用twitteR 1.1.8

library(httr)
library(twitteR)
setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
tweets <- searchTwitter('#bigdata', n=150) 
tweets.df <- do.call(rbind, lapply(tweets, as.data.frame))
write.csv(tweets.df, "C:/...")

希望这有帮助!

答案 1 :(得分:0)

可能是因为您要求http而非https请求authURL和accessURL。

以下是我使用和使用的一些代码:

require(twitteR)

api_key = "XXXXX"
api_secret = "XXXXX"

TwitterOAuth<-function(){
  reqURL <- "https://api.twitter.com/oauth/request_token"
  accessURL <- "https://api.twitter.com/oauth/access_token"
  authURL <- "https://api.twitter.com/oauth/authorize"
  twitCred <- OAuthFactory$new(consumerKey=api_key, 
                               consumerSecret=api_secret, 
                               requestURL=reqURL,
                               accessURL=accessURL,
                               authURL=authURL)
  options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))
  twitCred$handshake()
  registerTwitterOAuth(twitCred)
  }

TwitterOAuth()

我在blogpost I did a while ago中有更多详细信息。