繁体   English   中英

R将search_tweets函数(rtweet包)循环到Twitter句柄的向量时出现R身份验证错误

[英]R Authentication error when looping search_tweets function (rtweet package) over vector of Twitter handles

我创建了一个循环,它通过Twitter句柄向量运行,并使用rtweet包中的search_tweets函数从中收集推文。

下载最新版本的rtweet

## install devtools package if it's not already
if (!requireNamespace("devtools", quietly = TRUE)) {
install.packages("devtools")
}

## install dev version of rtweet from github
devtools::install_github("mkearney/rtweet")

library(rtweet)

创建令牌

## autheticate via web browser
token=create_token(
app = "My_app",
consumer_key = "My Consumer Key",
consumer_secret = 
"My Secret Code",set_renv = FALSE)

这是我的Twitter手柄,存储在矢量中

twitter_handles=c("@realDonaldTrump","@HillaryClinton","@MittRomney")

然后我遍历这些句柄,并将每个句柄的结果存储为唯一的数据帧

#Loop through the twitter handles & store the results as individual dataframes
for(handle in twitter_handles) {

  result <- search_tweets(handle, n = 3500 , include_rts = FALSE,retryonratelimit = TRUE)

if(length(result) != 0){

  result$`Twitter Handle` <- handle
  result$Source <- "Search"

  df_name <- paste(tolower(substring(handle, 2)),"_search")

  if(exists(df_name)) {
    assign(df_name, unique(rbind(get(df_name), result)))
  } else {
    assign(df_name, result)
  }
  }

  }

但是,当我这样做时,我收到一条错误消息

警告:32 - 无法验证您的身份。 向量中的错误(“list”,ntimes):无效的“长度”参数

但是我不认为这是一个身份验证问题,因为当我尝试使用随机关键字/主题标签时,我会得到结果

data <- search_tweets("#rstats", n = 10, include_rts = FALSE,token = token)

我的循环工作正常,但最近它已经开始抛出错误。 关于为什么会发生这种情况的任何想法,以及是否有修复?

非常感谢您的帮助!

在第一个错误:

“警告:32 - 无法验证您。向量中的错误(”list“,ntimes):无效的”长度“参数”

通常,如果您使用的是旧版本的rtweet ,则会遇到此错误。

为什么?

当Twitter更新其API时,它们有时会更改API GET请求的结构。 每次发生这种情况时, rtweet都必须重新格式化他们的请求,要求您使用最新版本的rtweet来维护与Twitter API的连接。 有趣的是,一些API调用仍然会成功,因为对Twitter API的调用没有改变。

您遇到的错误引用@ TwitterCommunity.com

获取最新版本的rtweet

要获取最新版本的rtweet,您可以使用devtools包(安装后)。

## install devtools package if it's not already
if (!requireNamespace("devtools", quietly = TRUE)) {
  install.packages("devtools")
}

## install dev version of rtweet from github
devtools::install_github("mkearney/rtweet")

## load rtweet package
library(rtweet)

相关错误

向量中的错误(“list”,n.times):invalid'length'参数另外:警告消息:超出速率限制。

查找跟踪错误的好地方是github上用于rtweet包的Github包跟踪列表。

令牌安全

这是一个旁注,但我的感觉是你可能还想在没有API密钥的情况下分享你的完整代码。 您可以使用~/.Reviron在R中执行此~/.Reviron

# Reload .Renviron
# Do this to capture any edits to Environment variables
readRenviron("~/.Renviron")

# Generate a token
token <- create_token(
  app = "rtweet_51672443_test_application",
  consumer_key = Sys.getenv("RTWEET_CONSUMER_KEY"),
  consumer_secret = Sys.getenv("RTWEET_CONSUMER_SECRET_KEY")
) 

其中.Renviron包含:

RTWEET_CONSUMER_KEY="<Insert Consumer Key obtained from Titter>"
RTWEET_CONSUMER_SECRET_KEY="<Insert Consumer Secret Key obtained from Titter>"

我希望上述内容有助于指明您正确的方向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM