尽管凭据有效,但根据请求从 Xero API 收到 403 错误

403 Error received from Xero API on request despite valid credentials

我们遇到了一个集成客户的问题,该集成客户无法使用 oauth2 系统为其三个租户中的两个进行同步。其中一个同步正确且没有问题,但另外两个 return 如下:

[403] Client error: GET https://api.xero.com/api.xro/2.0/Accounts resulted in a 403 Forbidden response:
{"Type":null,"Title":"Forbidden","Status":403,"Detail":"AuthenticationUnsuccessful" (truncated...)

最初我们认为这是一个简单的身份验证问题,但是他们的访问令牌可以无错误地刷新。所有三个租户都具有相同的范围设置:

"scope": [
    "email",
    "profile",
    "openid",
    "accounting.settings",
    "accounting.transactions",
    "accounting.contacts",
    "offline_access"
  ]

而且我可以确认他们的租户 ID 已正确传递给 SDK 方法(getAccounts,在本例中)。断开并重新连接没有帮助。

这似乎是一个相当普遍的问题,但我找到的 none 解决方案适用于我们的案例。无论如何,我已经能够说出来了。

所以我们设法解决了这个问题。事实证明,用户已经从他们这边禁用了我们的集成(Xero 提供了从 Xero 内部撤销授权的选项),让他们看起来仍然与我们保持联系,但不再有权使用这两个租户。

需要注意的一点(这引起了一些混乱)是 access/refresh 使用 OAuth 的令牌身份验证与 Xero 的逐个租户授权是分开的,这使我们能够保持刷新访问而不会被能够使用该访问权限。