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

云函数调用Plaid createAssetReport报UNAUTHENTICATED错误排查

修复方案

按优先级依次排查以下问题:

  • 首先修正Plaid SDK的鉴权配置方式:不要手动在baseOptions里注入PLAID-CLIENT-ID和PLAID-SECRET请求头,新版Plaid Node.js SDK要求通过apiKey配置项传入鉴权参数,手动传头在部分接口调用时会出现头被覆盖丢失的情况,直接导致鉴权失败。
  • 检查获取access_token时的link token配置:调用/link/token/create生成Link令牌时,必须将assets加入products参数数组。Plaid的access_token和初始申请的产品权限强绑定,未申请assets权限的token无法调用资产报告接口。
  • 确认Plaid环境的产品开通状态:Sandbox环境默认开放Assets接口,Development、Production环境需要在Plaid后台手动提交Assets产品的开通申请,未开通时接口调用会被拦截。
  • 核对日志查询范围:确认你在Plaid后台查询日志时选择的环境和云函数实际运行的环境一致(比如云函数配的是Production环境就不要查Development的日志),同时在云函数的错误捕获逻辑中打印完整的错误响应体(重点看err.response.data字段),不要只打印错误对象的字符串摘要,方便定位具体错误来源。
  • 优化Plaid客户端初始化逻辑:将Plaid客户端的初始化代码移到云函数逻辑外复用实例,避免每次冷启动重复初始化带来的异常。

修正后的代码如下:

const plaidConfig = new Configuration({
  basePath: PlaidEnvironments[functions.config().app.env],
  apiKey: {
    clientId: functions.config().plaid.client_id,
    secret: functions.config().plaid.secret,
  }
});
const plaidClient = new PlaidApi(plaidConfig);

exports.createAssetReport = functions.https.onCall(async (data, context) => {
  const { accessToken, daysRequested } = data;
  // 可按需打开options配置
  // const options = {
  //   client_report_id: '123',
  //   webhook: "https://www.example.com"
  // };

  try {
    const response = await plaidClient.assetReportCreate({
      access_tokens: [accessToken],
      days_requested: daysRequested,
      // options
    });
    return response.data.asset_report_token;
  } catch (err) {
    // 打印完整错误信息方便排查
    console.error('Create asset report failed:', err.response?.data || err.message);
    throw new functions.https.HttpsError(
      "internal",
      "Unable to create asset report"
    );
  }
});

注:如果以上步骤排查完仍有问题,可以先在本地用相同的鉴权参数、access_token直接调用Plaid接口测试,排除云函数网络层的拦截问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:27:21