问题描述
我正在将我们的应用从 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 没有看到用户已授权您的集成与他们的任何组织/租户进行交互。
您能否验证您的集成是否仍列在设置下的已连接应用列表中?