R语言Rtweet包调用create_token认证触发HTTP 401未授权错误求助
Rtweet包create_token返回401未授权错误解答
错误成因
- Rtweet的
create_token默认走OAuth 1.0a的3-legged认证流程,和twitteR包直接传入四个认证参数的实现逻辑不同,仅传入consumer key、secret时,要求开发者后台配置的App回调地址和Rtweet默认回调http://127.0.0.1:1410一致,未配置就会触发401错误。 - 申请的API权限版本与Rtweet默认调用的接口版本不匹配,比如仅开通了v2版本API权限,使用旧版Rtweet调用v1.1接口会返回未授权。
- 认证参数传入错误,比如复制consumer key、secret时携带多余空格,或者混淆了API Key与Bearer Token的取值。
- 申请的App权限范围与
create_token默认请求的权限不匹配,比如App仅开通只读权限,但函数默认请求读写权限。
适配Rtweet的可行解决办法
- 配置正确的回调地址
登录Twitter Developer后台,进入对应App的「Settings」-「User authentication settings」页面,打开OAuth 1.0a开关,在回调地址栏添加http://127.0.0.1:1410,保存配置后重新运行create_token代码,页面弹出浏览器授权窗口后完成授权即可自动生成有效token。 - 直接传入完整认证参数
Rtweet的create_token本身支持传入access token和access secret参数,无需使用twitteR的setup_twitter_oauth函数,代码写法如下:
该方法无需配置回调地址,直接使用开发者后台生成的四个认证参数即可完成认证,适配所有版本的Rtweet。twitter_token <- create_token( app = appname, consumer_key = key, consumer_secret = secret, access_token = "你的access token", access_secret = "你的access token secret" ) - 适配v2版本API权限
若仅申请了v2版本API权限,可升级到最新版Rtweet,使用Bearer Token直接认证,适合仅拉取公开数据的场景,代码写法如下:library(rtweet) auth <- rtweet_bearer(token = "你的v2 Bearer Token") auth_as(auth) - 额外排查点:复制认证参数时确认无多余空格、引号,确认App权限范围与实际操作需求匹配,比如需要发布内容时需开通读写权限。
内容的提问来源于stack exchange,提问作者Tonny Nascimento
相关产品推荐
相关产品推荐

