Xero API同用户返回不同UUID 如何通过xero_userid查询对应用户
两类ID存在差异的核心原因
两个ID属于完全不同的标识体系,本身就不是同一个字段:
- OAuth2授权返回的
xero_userid是Xero平台级的全局用户ID,和具体的Xero组织(租户)无关,同一个用户不管加入多少个Xero企业组织,这个ID始终固定不变。 - Users API返回的用户ID是组织内成员ID,是用户被邀请加入某个具体Xero组织时,在该组织下生成的专属标识。同一个用户加入不同的Xero组织,会生成完全不同的组织内成员ID,这也是你直接拿全局
xero_userid调用单用户查询接口返回404的直接原因——接口根本不识别全局ID作为路径查询参数。
匹配对应组织内用户的操作方法
Xero目前没有提供直接通过全局xero_userid查询单用户的接口,按以下步骤操作即可完成匹配:
- OAuth2授权流程走完拿到token后,先调用连接关系接口,获取当前授权token可访问的所有Xero组织ID列表,确定你要操作的目标组织的
tenantId。 - 调用Users API的用户列表接口(不要在路径里拼接单用户ID),请求头中携带上一步拿到的目标
tenantId,拉取该组织下的全部用户数据。 - 遍历返回的用户列表,找到对象中
XeroUserId字段值和OAuth2返回的xero_userid完全一致的记录,这条就是你要找的对应用户,记录里的UserID字段就是该用户在这个组织下的成员ID,后续所有针对该用户的组织内接口调用,都使用这个UserID即可。
避坑提示:如果你的应用需要支持用户切换多个Xero组织,每个组织下都要重新做一次上述匹配流程,不要缓存全局ID和某一个组织内成员ID的映射关系跨组织使用。
内容的提问来源于stack exchange,提问作者Ben Hull
相关产品推荐
相关产品推荐

