Twitter API v2.0使用http和r删除请求



由于在API编程方面的经验很少,我正在寻找一种使用Twitter API v2.0与r中的http包发送DELETE或POST请求的方法。我通常使用academictwitteR包与API交互,但该包使用承载令牌身份验证,在我看来,这对于写权限(DELETE和POST所要求的)是不够的。因此,第一步似乎是设置此处所描述的OAuth 1.0a身份验证凭据。我下载并存储了四个变量(oauth_token;oauth_token_secret;oauth_consumer_key;oauth_consumer_secret)从我创建的应用程序,但后来我卡住了如何设置与httr的请求。

我不能提供一个例子,因为我看不懂代码,希望你能理解。任何帮助都非常感激!

不确定你的具体需求和你之前尝试过的

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

它非常方便,并提供了相当多的功能与twitter api交互(也可以发布和删除tweet)

#Posting
post_tweet("hello world")
#Following
post_follow("someuser")
# Not sure about deleting, but should work like this
post_tweet(destroy_id= "postID")

要获取您的帖子ID以删除它,您可以使用get_my_timeline。这将为您的帖子提供id。

函数简介

当然,您首先还需要一个访问令牌。他们有一个很好的解释页面,说明如何做到这一点。还有一个常见问题解答。这个解释相当长,可能太具体了,在这里无法详细介绍。但我想知道它是否适用于你。

进一步的事情:

  1. 确保httpuv已经安装
  2. 一定要有最新的rtweet版本(从github我认为最好是)
  3. 也检查以下内容:去developer.twitter.com/en/apps,然后到你的应用程序。在"权限"下,确保给读和写。在"App Detail"下添加127.0.0.1:1410作为回调Url。在"密钥和令牌"下创建密钥
  4. 重新生成令牌/密钥

所以试试这个:

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")
)

我发布的其余代码应该保持不变。

一般来说,现在似乎有三种认证方式:

rtweet_user()交互式地验证现有twitter用户。如果你想让twitter控制你的页面,这个表单是最合适的twitter帐户。

rtweet_app()作为twitter应用程序进行身份验证。一个应用程序不能执行动作(即不能推特),但有通常更高的速率限制(即您可以进行更多搜索)。看到细节在https://developer.twitter.com/en/docs/basics/rate-limits.html。这表格是最合适的,如果你正在收集数据。

rtweet_bot()作为bot进行身份验证,它代表一个对象执行操作如果你想创建一个twitter,这个表单是最合适的由计算机而不是人类运行的帐户。

我查看了您提供的用于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)

最新更新