You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R的httr、jsonlite、dplyr抓取Twitter报Invalid Request错如何解决

问题排查思路
  • 首先排查readline函数使用错误:readline()的入参是交互提示语而非默认值,你写的readline('BenDuBose')运行时如果没有手动输入内容直接回车,handle变量会是空字符串,导致请求的username参数为空,触发接口参数校验失败。
  • 其次排查接口参数匹配问题:你调用的是用户信息查询接口/2/users/by,不支持attachments.media_keys这个扩展参数,该参数仅适用于推文查询类接口,参数不匹配也会触发校验错误。
  • 最后校验身份凭证:确认系统环境变量BEARER_TOKEN已正确配置,无空值、拼写错误或权限过期问题。
可行解决方案

1. 修复当前用户查询代码

如果你仅需要验证接口连通性查询用户信息,可使用以下修正后代码:

library(httr)
library(jsonlite)
library(dplyr)

# 校验并获取凭证
bearer_token <- Sys.getenv("BEARER_TOKEN")
if (bearer_token == "") stop("请先配置BEARER_TOKEN环境变量")
headers <- c('Authorization' = sprintf('Bearer %s', bearer_token))

# 直接赋值用户名,无需交互输入
handle <- "BenDuBose"
url_handle <- sprintf('https://api.twitter.com/2/users/by?username=%s', handle)

response <- httr::GET(
  url = url_handle,
  httr::add_headers(.headers = headers)
)
# 解析返回内容
user_info <- fromJSON(content(response, as = "text"))
print(user_info)

2. 实现核心需求:抓取指定用户/推文的图片

场景1:根据已有推文ID批量获取媒体链接

如果你已经整理好推文ID列表,直接调用推文查询接口即可获取对应的媒体资源地址:

# 你的推文ID列表,示例值可替换为你的实际数据
tweet_ids <- c("1692345678901234567", "1692345678901234568")
params <- list(
  'ids' = paste(tweet_ids, collapse = ","),
  'expansions' = 'attachments.media_keys',
  'media.fields' = 'url,preview_image_url'
)

response <- httr::GET(
  url = "https://api.twitter.com/2/tweets",
  httr::add_headers(.headers = headers),
  query = params
)
result <- fromJSON(content(response, as = "text"))
# 提取媒体图片链接
media_urls <- result$includes$media$url

场景2:查询指定用户的带图推文

如果需要先获取用户发布的带图推文,再提取图片,使用以下代码:

# 先获取用户ID(用之前查询到的user_info里的id值也可以)
user_id <- user_info$data$id
params <- list(
  'max_results' = 100,
  'expansions' = 'attachments.media_keys',
  'media.fields' = 'url,preview_image_url',
  'tweet.fields' = 'created_at'
)

response <- httr::GET(
  url = sprintf("https://api.twitter.com/2/users/%s/tweets", user_id),
  httr::add_headers(.headers = headers),
  query = params
)
result <- fromJSON(content(response, as = "text"))
# 提取媒体图片链接
user_media_urls <- result$includes$media$url

内容的提问来源于stack exchange,提问作者David M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:54:06