node.js - Xero API 403 - AuthenticationUnsuccessful 错误
问题描述
我将 Xero Api 与 Nodejs 和 xero-node 库一起使用。
我已完成 oAuth 流程并将令牌保存到数据库中。我现在遇到的问题是在尝试从 Xero 获取联系人、帐户或用户的任何内容时,不断收到 403 禁止错误。示例代码如下
我可以毫无问题地让租户满意,但其他任何事情都不起作用。我检查了范围以确保在设置客户端时它们是正确的。
var getStuff = async(tokenSet) => {
await xero.setTokenSet(tokenSet);
const tenants = await xero.updateTenants();
const xeroTenantId = tenants[0].id // {String} Xero identifier for Tenant
const ifModifiedSince = new Date("2020-02-06T12:17:43.202-08:00");
const where = 'IsSubscriber==true'; // {String} Filter by an any element
const order = 'LastName ASC'; // {String} Order by an any element
console.log(tenants);
try {
const response = await xero.accountingApi.getUsers(xeroTenantId, ifModifiedSince, where, order);
console.log(response.body || response.response.statusCode)
}
catch (err) {
/// console.log(err);
console.log(`There was an ERROR! \n Status Code: ${err.response.statusCode}.`);
console.log(`ERROR: \n ${JSON.stringify(err.response.body, null, 2)}`);
}
}
解决方案
您正在通过的访问令牌中添加了哪些范围?你可以在这里解码你的令牌https://jwt.io/
另外 - 您需要将“tenant.tenantId”传递给函数。我相信tenant.id 实际上与从 /connections 端点返回的连接 id 相关。
我的直觉是这就是问题所在。也很好奇它是如何工作的,因为 updateTenants() 最后应该有空函数调用。这对你有用吗?
推荐阅读
- swift - 自定义单元格未选择不调用委托
- apache-spark - Spark SQL 不会获取 Hive 表架构中的更改
- ansible - Ansible:如何使用变量进行过滤
- c++ - 模板函数如何与可能共享交集的多个类型名一起工作?
- html - 需要帮助将功能添加到 html 中的按钮
- java - FFMPEG JAVA ffmpeg 在 .jar 应用程序中不起作用
- reactjs - 我可以使用 RollupJs 为我的组件库生成组件级 css 文件吗?
- javascript - vue-select:选择具有相同标签的多个选项
- android - 使用 iframe 播放 Html 时,Android WebView 显示空白页
- rust - 使用 ARM GDB 调试 STM32 的 Rust 固件时,回溯充满重复条目