You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Posit Connect中Plumber API用API Key认证时RSTUDIO_USER_IDENTITY为空的问题与解决

问题解答

1. 为何Sys.getenv()["RSTUDIO_USER_IDENTITY"]为空?

RSTUDIO_USER_IDENTITY是仅针对Posit Connect交互式RStudio会话的环境变量——只有当用户在Posit Connect平台内打开交互式RStudio编辑器时,该变量才会被自动设置。而你部署的Plumber API是作为无状态的后台服务运行的,不属于交互式会话场景,因此这个环境变量不会被初始化,调用后自然返回空值。

2. 替代方法:获取API密钥对应的用户账户信息

有两种可靠的方式可以实现需求:

方法一:直接读取Plumber请求对象的user属性

当请求通过API密钥成功认证后,Posit Connect会自动将对应的用户信息注入到Plumber的req请求对象中,你可以直接读取req$user获取用户ID、用户名等核心信息:

library(plumber)

#* @get /exampleapi
information <- function(req, res, session) {
  # 返回用户ID和用户名
  return(list(
    user_id = req$user$id,
    username = req$user$username
  ))
}

方法二:调用Posit Connect内部API查询完整用户信息

如果需要更详细的用户数据(比如邮箱、角色等),可以用当前请求的API密钥调用Posit Connect的/v1/user端点,该端点会返回密钥对应的用户完整信息:

library(plumber)
library(httr2)

#* @get /exampleapi
information <- function(req, res, session) {
  # 从请求头中提取API密钥
  api_key <- sub("^Key ", "", req$HTTP_AUTHORIZATION)
  # 调用Connect用户信息接口
  user_info <- request(Sys.getenv("CONNECT_SERVER")) %>%
    req_url_path_append("v1/user") %>%
    req_auth_bearer_token(api_key) %>%
    req_perform() %>%
    resp_body_json()
  
  return(user_info)
}

注意:部署API时需在Posit Connect的环境变量设置中添加CONNECT_SERVER,值为你的Connect服务器地址(例如https://your-connect-domain.com)。

内容的提问来源于stack exchange,提问作者user3516915

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:46:23