令牌刷新后更新租户不工作

问题描述

我正在将我们的应用从 oauth 1 更新到 2。整个流程运行良好 - 我可以迁移和保存令牌并访问 API。但是,一旦原始令牌过期并刷新,就会出现问题。刷新后,对 updateTenants调用不会返回任何活动连接。

我的伪代码如下:

  const tokenSet = await getTokenSet(); // Returns saved token set from DB. Assume token is expired!!
  const client = new XeroClient(...);
  client.setTokenSet(tokenSet);

  const newToken = await client.refreshToken();
  await savetokenSet(newToken); // Save to DB

  const token = client.readTokenSet();
  console.log(token); // Does return my NEW active token set
  const tenants = await client.updateTenants(false);
  console.log(tenants.body); // This returns an array of length 0

不清楚为什么 updateTenants 的结果为空。我能够通过使用刷新的令牌之一手动调用 GET https://api.xero.com/connections 端点并在正文中看到一个空数组来验证这一点。

有什么想法吗?

解决方法

我玩弄了我们的 xero-node-oauth2-app,看看我是否可以重新创建它。这是我发现的:

如果我连接到我的 Xero 组织以获取有效令牌,然后通过 Xero 连接的应用程序仪表板断开连接,然后刷新我的令牌触发 updateTenants 连接端点返回一个空数组和状态代码 200。换句话说,这是一个成功的调用但 Xero 没有看到用户已授权您的集成与他们的任何组织/租户进行交互。

您能否验证您的集成是否仍列在设置下的已连接应用列表中?

https://community.xero.com/developer/discussion/127403806