.NET调用ACC Admin API时a.开头HubId转AccountId报错求助
问题解决:处理ID以
a.开头的Hub获取项目的方法 核心结论
ID以a.开头的Hub不能使用ACC Admin API获取项目,这类Hub属于Autodesk Data Management的核心Hub(对应旧版Autodesk 360的个人/团队项目),需要改用Data Management API接口查询项目。
具体原因与区分
GetHubsAsync返回的Hub分为两类,对应不同的API体系:
b.xxxx-xxxx格式:属于ACC/BIM 360账户,按照文档要求去掉b.前缀后,可通过ACC Admin API的GET /acc/v1/admin/accounts/{accountId}/projects获取项目,这是合规的。a.xxxx格式:属于Autodesk Data Management核心Hub,对应非ACC/BIM 360的经典项目,这类Hub的项目查询不适用ACC Admin API,因此传入该ID会触发400验证错误。
正确处理流程
遍历Hub列表时,根据ID前缀分支处理:
- 对
b.开头的Hub:移除前缀后调用ACC Admin API获取项目。 - 对
a.开头的Hub:直接使用完整的Hub ID调用Data Management API的GET /data/v1/hubs/{hubId}/projects端点获取项目,无需去除前缀。
.NET示例代码
// 假设已初始化Authenticated的Autodesk SDK客户端 var hubs = await autodeskClient.GetHubsAsync(); foreach (var hub in hubs) { if (hub.Id.StartsWith("b.")) { // 处理ACC/BIM 360账户项目 string accountId = hub.Id.Substring(2); var accProjects = await autodeskClient.AccAdmin.GetProjectsAsync(accountId); // 后续处理ACC项目逻辑 } else if (hub.Id.StartsWith("a.")) { // 处理Data Management核心Hub项目 var dmProjects = await autodeskClient.DataManagement.GetProjectsAsync(hub.Id); // 后续处理DM项目逻辑 } }
内容的提问来源于stack exchange,提问作者Nectar Abu Banat
相关产品推荐
相关产品推荐

