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

Bruno API预请求脚本自动生成access_token问题求助

Bruno预请求脚本获取Access Token问题排查与修正

你的脚本存在以下几个关键问题:

  • 请求路径错误:你脚本里拼接的是SSO Realm的token接口路径,但你实际需要调用的是https://api.url.com/oauth/token
  • 认证凭据不匹配:你用Username和Password生成Basic Auth头,但需求里明确要求用client_id和client_secret
  • 冗余的Token Exchange操作:你额外添加了token交换的请求步骤,但你的需求只需要获取基础的access_token,这部分属于多余操作
  • 环境变量名不对应:需求里的变量是client_id、client_secret,但脚本里用的是Username、Password等不匹配的变量名

修正后的脚本:

// 目标Token接口地址
const tokenUrl = "https://api.url.com/oauth/token";

// 从Bruno环境变量读取client_id和client_secret
const clientId = bru.getEnvVar("client_id");
const clientSecret = bru.getEnvVar("client_secret");

// 生成Basic认证头
const authCreds = btoa(`${clientId}:${clientSecret}`);
const requestHeaders = {
  "Authorization": `Basic ${authCreds}`,
  "Content-Type": "application/x-www-form-urlencoded"
};

// 构造client_credentials模式的请求参数
const requestParams = new URLSearchParams({
  grant_type: "client_credentials"
});

// 发送请求并保存access_token到变量
try {
  const response = await axios.post(tokenUrl, requestParams.toString(), { headers: requestHeaders });
  bru.setVar("access_token", response.data.access_token);
  console.log("Access Token已成功保存,可在其他请求中通过{{access_token}}调用");
} catch (error) {
  console.error("获取Access Token失败:", error.response?.data || error.message);
  throw error; // 抛出错误,让Bruno中断后续请求
}

修正说明:

  1. 直接使用你指定的Token接口地址,避免路径拼接错误
  2. 替换凭据来源为client_id和client_secret,完全匹配需求
  3. 移除了不需要的Token Exchange步骤,聚焦核心需求
  4. 增加异常捕获,方便调试失败原因
  5. 输出清晰的日志信息,便于确认操作结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 15:50:00