我在教程中找到了以下代码,但在执行此握手命令后,它给出了以下错误:
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"))
答案 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中有更多详细信息。