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

使用Google Apps Script调用Xero API时遇403错误的解决咨询

解决Xero API调用403错误的方案

以下是针对你遇到的403错误的具体排查和修复步骤:

1. 补充xero-tenant-id请求头

Xero的会计类API(如Journals接口)必须携带xero-tenant-id请求头,你的callXeroApi函数里遗漏了这个关键参数。修改后的请求头配置如下:

headers: {
  'Authorization': 'Bearer ' + service.getAccessToken(),
  'Accept': 'application/json',
  'xero-tenant-id': XERO_TENANT_ID // 新增该行
}

2. 验证权限范围与应用配置一致性

  • 确认代码中设置的scope包含accounting.journals.read(你的代码已经配置正确)
  • 登录Xero开发者后台,检查你的应用是否启用了对应的权限,确保权限范围和代码中的完全匹配

3. 重置OAuth授权状态

如果旧的授权令牌存在权限问题,可清除现有授权信息并重新认证:

  1. 在脚本编辑器中执行以下代码清除存储的令牌:
function resetAuth() {
  PropertiesService.getUserProperties().deleteAllProperties();
}
  1. 重新运行logAuthorizationUrl()获取授权链接,完成OAuth2认证流程

4. 核对回调URL配置

确保Xero开发者后台中设置的回调URL,与代码里OAUTH2_CALLBACK的内容完全一致(包括域名、路径和大小写)

5. 检查令牌有效性

在代码中添加日志,确认令牌是否有效且未过期:

function checkTokenStatus() {
  var service = getXeroService();
  if (service.hasAccess()) {
    Logger.log('Access Token: ' + service.getAccessToken());
    Logger.log('Token Expires At: ' + service.getTokenExpirationDate());
  }
}

修改后的完整callXeroApi函数

function callXeroApi() {
  var service = getXeroService();
  if (service.hasAccess()) {
    var url = "https://api.xero.com/api.xro/2.0/Journals";
    var options = {
      method: 'GET',
      headers: {
        'Authorization': 'Bearer ' + service.getAccessToken(),
        'Accept': 'application/json',
        'xero-tenant-id': XERO_TENANT_ID // 补充租户ID头
      },
      muteHttpExceptions: true
    };
    var response = UrlFetchApp.fetch(url, options);
    
    if (response.getResponseCode() == 200) {
      var json = JSON.parse(response.getContentText());
      Logger.log(json);
    } else {
      // 打印详细错误信息便于排查
      Logger.log('Error Code: ' + response.getResponseCode());
      Logger.log('Error Response: ' + response.getContentText());
    }
  } else {
    Logger.log('No access token available.');
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:54:51