使用R调用Twitter API爬取数据时遭遇403错误,请求排查方案
问题:使用rtweet调用Twitter API返回403错误
背景
已完成Twitter API注册,获取全部密钥(api key、api secret、access token、access secret、bearer token),遵循rtweet认证教程操作:
- 执行
auth <- rtweet_app()并输入bearer token,认证对象显示<Twitter bearer token>,无401认证失败错误 - 执行查询时返回403错误
操作与错误详情
执行查询代码:
df <- search_tweets("#rstats", token = auth)
返回错误:
Error: Twitter API failed [403] Check error message at https://developer.twitter.com/en/support/twitter-api/error-troubleshooting
查阅Twitter错误文档仅得到:
The request is understood, but it has been refused or access is not allowed. An accompanying error message will explain why.
会话信息
R version 4.1.3 (2022-03-10) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 22000) Matrix products: default locale: [1] LC_COLLATE=English_Canada.1252 LC_CTYPE=English_Canada.1252 LC_MONETARY=English_Canada.1252 LC_NUMERIC=C [5] LC_TIME=English_Canada.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] rtweet_1.0.2 loaded via a namespace (and not attached): [1] prettyunits_1.1.1 withr_2.5.0 digest_0.6.29 crayon_1.5.1 R6_2.5.1 lifecycle_1.0.1 evaluate_0.15 [8] httr_1.4.4 rlang_1.0.2 progress_1.2.2 cli_3.3.0 curl_4.3.2 vctrs_0.4.1 ellipsis_0.3.2 [15] rmarkdown_2.14 tools_4.1.3 tinytex_0.40 hms_1.1.1 xfun_0.30 yaml_2.3.5 fastmap_1.1.0 [22] compiler_4.1.3 pkgconfig_2.0.3 askpass_1.1 htmltools_0.5.2 knitr_1.39 >
排查建议
确认API权限与计划
登录Twitter开发者平台,检查项目是否启用Twitter API v2的tweet.read等搜索相关权限;同时确认你的API计划(免费/基础/高级)支持search_tweets对应的端点,免费计划有查询频率和范围限制。适配API端点
尝试直接调用v2版本的搜索函数,避免版本适配问题:df <- search_tweets_v2("#rstats", token = auth)获取详细错误信息
用httr直接调用API,查看具体错误原因:library(httr) response <- GET( "https://api.twitter.com/2/tweets/search/recent?query=%23rstats", add_headers(Authorization = paste0("Bearer ", "你的bearer token")) ) content(response)检查IP与网络
确认当前IP未被Twitter API限制,公共网络或VPN可能触发安全拦截,尝试切换到稳定的私人网络测试。升级rtweet版本
当前使用的rtweet_1.0.2版本较旧,升级到最新版本修复可能存在的API适配问题:install.packages("rtweet")
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

