使用rtweet的user_oauth2认证失败问题求助
问题:Posit Cloud中使用rtweet OAuth2认证时出现127.0.0.1连接失败
我正尝试用rtweet包拉取推文,拥有基础级开发者权限,使用的代码如下:
require(httr) library(httpuv) library(base64enc) require(rtweet) client <- rtweet_client(client_id= "xxxxxxxxxxxxxxxxxxx", client_secret = "xxxxxxxxxxxxx", app = "xxxxxxxxxxxxxxx") client_as(client) user_oauth2 <- rtweet_oauth2()
我的回调URI为http://127.0.0.1:1410/,符合Twitter开发者文档建议。执行最后一行代码后,页面跳转到授权页,但授权时出现错误:
This site can’t be reached 127.0.0.1 refused to connect.
同时R卡在认证阶段:
Waiting for authentication in browser... Press Esc/Ctrl + C to abort
我在Posit Cloud上使用R,会话信息如下:
sessionInfo() R version 4.3.0 (2023-04-21) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 20.04.6 LTS Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3 LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3; LAPACK version 3.9.0 locale: [1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8 LC_COLLATE=C.UTF-8 [5] LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8 LC_PAPER=C.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
请问该如何解决此问题?
解决方案
1. 改用授权码流程(带PKCE)适配云端环境
Posit Cloud是云端运行环境,本地回环地址127.0.0.1无法被本地浏览器访问到,需替换成无浏览器交互的授权码流程。修改认证代码:
user_oauth2 <- rtweet_oauth2( client = client, use_browser = FALSE, pkce = TRUE )
执行后R会输出一个授权URL,复制该URL到本地浏览器打开,完成Twitter账号授权后,页面会给出一个授权码,将此码粘贴回R控制台即可完成认证。
2. 确认Twitter开发者平台的回调URI配置
确保在Twitter开发者平台的App设置中,回调URI已设置为http://localhost:1410/(无需修改为云端地址,仅需保持与代码逻辑匹配)。
3. 更新httpuv包
旧版本httpuv可能在云端环境存在兼容性问题,执行以下命令更新:
install.packages("httpuv")
4. 备选方案:应用级无用户授权认证
如果仅需拉取公开推文,可跳过用户授权,使用应用级认证:
# 临时设置环境变量(也可在Posit Cloud的环境变量面板中永久配置) Sys.setenv( RTWEET_CLIENT_ID = "你的client_id", RTWEET_CLIENT_SECRET = "你的client_secret" ) # 初始化应用级认证 auth <- rtweet_app() auth_as(auth)
注意:应用级认证的权限范围有限,无法访问用户私有内容。
内容的提问来源于stack exchange,提问作者user1807435
相关产品推荐
相关产品推荐

