由于在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。
函数简介
当然,您首先还需要一个访问令牌。他们有一个很好的解释页面,说明如何做到这一点。还有一个常见问题解答。这个解释相当长,可能太具体了,在这里无法详细介绍。但我想知道它是否适用于你。
进一步的事情:
- 确保httpuv已经安装
- 一定要有最新的rtweet版本(从github我认为最好是)
- 也检查以下内容:去developer.twitter.com/en/apps,然后到你的应用程序。在"权限"下,确保给读和写。在"App Detail"下添加127.0.0.1:1410作为回调Url。在"密钥和令牌"下创建密钥
- 重新生成令牌/密钥
所以试试这个:
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)