Twitter API v2.0 使用 httr 和 R 删除请求

Twitter API v2.0 DELETE request using httr and R

由于在 API 编程方面经验不足,我正在寻找发送 DELETE or POST request using the Twitter API v2.0 with the httr package in R. I usually use the academictwitteR package to interact with the API, but the package uses a bearer token authentication that seems to me to not be adequate for write privileges (required by DELETE and POST). Therefore, it seemed that the first step is setting up the OAuth 1.0a authentication credintials as described here 的方法。我从我创建的应用程序下载并存储了四个变量(oauth_tokenoauth_token_secretoauth_consumer_keyoauth_consumer_secret),但后来我不知道如何设置请求 httr.

由于我无法理解代码,因此无法提供示例,希望您能理解。非常感谢任何帮助!

我查看了您提供的 DELETE 和 POST 请求的 curl 示例。它们在下面的 R 中被重写。不过,您需要更换 $OAUTH_SIGNATURE。请告诉我它是否适合您,因为我没有 Twitter 帐户也没有 OAuth 令牌,因此无法检查代码。

library(httr)

r <- DELETE(url = "https://api.twitter.com/2/users/2244994945/following/6253282",
            add_headers('Authorization'= 'OAuth $OAUTH_SIGNATURE'))

content(r)


r <- POST(
  url = "https://api.twitter.com/2/users/6253282/following",
  body = c("target_user_id" = "2244994945"),
  add_headers('Authorization'= 'OAuth $OAUTH_SIGNATURE'),
  content_type_json()
  )

content(r)

不确定您的具体要求以及您之前尝试过的方法。

仅使用 rtweet 包会是一个解决方案吗?

它非常方便,提供了很多与 Twitter 交互的功能 api(也可以 post 发送和删除推文)

例如

#Posting
post_tweet("hello world")

#Following
post_follow("someuser")

# Not sure about deleting, but should work like this
post_tweet(destroy_id= "postID")

要获取你的post ID删除它,你可以使用get_my_timeline获取。这应该为您的 post 提供 ID。

有关功能的简短intro,请参阅插图中的此处。

当然你还需要一个访问令牌。 他们对问题有很好的explanation page on how to do this. Also a FAQ。解释相当长,可能太具体,无法在此处详细介绍。但是很想知道它是否适合你。

进一步的事情:

  1. 确保安装了 httpuv
  2. 确保拥有最新的 rtweet 版本(我认为最好来自 github)
  3. 同时检查以下内容:转到 developer.twitter.com/en/apps,然后转到您的应用。在 'Permissions' 下确保提供读取和写入。在 'App Detail' 下添加 127.0.0.1:1410 作为回调 Url。在 'Keys and tokens' 下创建您的密钥
  4. 重新生成您的 tokens/keys

所以试试这个:

install.packages("httpuv")
devtools::install_github("mkearney/rtweet")

library(rtweet)
library(httpuv)

create_token(
app = appname,
consumer_key = key,
consumer_secret = secret,
access_token = access_token,
access_secret = access_secret
)

更新 我刚刚看到,在 github 的最新版本中,他们完全改变了他们的方法,create_token 现在已经贬值了。

这是新的方法:documentation

看来您现在必须使用 rtweet_bot()

library("askpass")
rtweet_bot(
  api_key = askpass("API key"),
  api_secret = askpass("API secret"),
  access_token = askpass("access token"),
  access_secret = askpass("access token")
)

我 post 编辑的其余代码应该保持不变。

总的来说现在好像有3种认证方式:

rtweet_user() interactively authenticates an existing twitter user. This form is most appropriate if you want rtweet to control your twitter account.

rtweet_app() authenticates as a twitter application. An application can't perform actions (i.e. it can't tweet) but otherwise has generally higher rate limits (i.e. you can do more searches). See details at https://developer.twitter.com/en/docs/basics/rate-limits.html. This form is most appropriate if you are collecting data.

rtweet_bot() authenticates as bot that takes actions on behalf of an app. This form is most appropriate if you want to create a twitter account that is run by a computer, rather than a human.