我对R有相当的基础知识。几个月前,我使用这个简单的代码和 Rtweet 包来使用我的 Twitter API 凭据来检索推文。
library(rtweet)
library(igraph)
library(tidyverse)
token <- create_token(
app = "name",
consumer_key = "XXXXXXXXXX",
consumer_secret = "XXXXXXXXXX",
access_token = "XXXXXXXXXX",
access_secret = "XXXXXXXXXX")
tweets <- search_tweets("search", n=50, type= "mixed", retryonratelimit = TRUE)
由于 API 更改,我无法再使用此代码。当我尝试运行代码时,收到 403 错误:“您当前只能访问 Twitter API v2 端点的子集和有限的 v1.1 端点(例如媒体发布、oauth)。如果您需要访问此端点,您可能需要不同的访问级别。”我支付了 API 的基本层费用,并且我的应用程序附加到了一个项目,但我不断收到此错误。另外,我尝试重置我的令牌。我做错了什么?
另外,我尝试了另一种身份验证方法,该功能只是要求我输入我的不记名令牌:
auth <- rtweet_app()
tweets_libros <- search_tweets("libros sep", n=50, type= "mixed", retryonratelimit = TRUE, token = auth)
它给了我同样的错误。
你知道我做错了什么吗?或者只是因为新的变化 Twitter API 就变得疯狂了?
而且,由于我只知道如何使用 Rtweet 连接到 Twitter(或 X)API,因此我要求 Bard 给我一个代码,以便在没有 Rtweet 包的情况下实现此目的:
library(httr)
library(jsonlite)
# Set your Twitter API keys and secrets
consumer_key <- "XXXXXXXXXX"
consumer_secret <- "XXXXXXXXXX"
access_token <- "XXXXXXXXXX"
access_token_secret <- "XXXXXXXXXX"
# Create the authentication header
bearer_token <- paste0("Bearer ", access_token)
headers <- c(Authorization = bearer_token)
# Search for tweets about "rstats" and limit the results to 10 tweets
url <- "https://api.twitter.com/2/tweets/search/recent?q=rstats&n=10"
response <- httr::GET(url, headers = headers)
# Check the response status code
if (response$status_code == 200) {
# The request was successful
tweets <- jsonlite::fromJSON(content(response, "text"))
print(tweets)
} else {
# The request failed
print(paste("Error:", response$status_code))
}
我不知道上面的代码是如何工作的,但我尝试用我的不记名令牌替换“bearer”,但这仍然不起作用。当我运行上面的代码时,它返回 401 错误。
您通过 OAuth 2.0 支付了 API 访问费用,但您并未使用它。这就是为什么你不断收到同样的错误。
阅读身份验证小插图以使用 Oauth 2.0 ,它基本上是说使用
rtweet_client
和 rtweet_oauth2
来获取身份验证。tweet_search_recent
或 tweet_search_all
,因为这些函数使用 API v2。
请注意,如果您想要轻松的身份验证体验,我建议您安装 httr2 devel 版本和来自 github(来自 devel 分支)的 rtweet。