调用BIM 360项目角色API返回账户全角色,如何获取项目专属角色?
获取BIM360项目专属角色的解决方案
我之前也碰到过一模一样的问题——调用GET /projects/{project_id}/industry_roles接口时,不管项目有没有配置角色,返回的全是账户级创建的所有角色。要拿到项目专属的角色,得换个思路,下面是亲测有效的方法:
方法一:通过项目成员接口提取角色
这是最可靠的方式:调用GET /projects/{project_id}/users接口获取该项目的所有成员,然后从每个成员的industry_roles字段里提取角色信息。这个字段里的角色就是项目实际分配给成员的专属角色,不会包含账户中未在该项目使用的角色。
给你个伪代码示例参考:
# 伪代码,仅作逻辑演示 # 调用接口获取项目成员列表 project_users = call_autodesk_api(f"GET /projects/{your_project_id}/users") # 用集合去重,收集项目专属角色 project_unique_roles = set() for user in project_users: # 遍历每个用户的角色 for role in user.get("industry_roles", []): # 可以收集角色ID或名称,按需选择 project_unique_roles.add((role["id"], role["name"])) # 最终project_unique_roles就是项目专属的角色集合
方法二:核对权限与项目ID
先确认你的2leg认证应用是否拥有account:read和project:read的完整权限,权限不足可能导致接口返回默认的账户角色而非项目特定角色。另外,务必检查请求的project_id是正确的项目UUID,别和账户ID搞混了。
方法三:结合BIM360 UI确认角色范围
如果需要先明确项目应该有哪些专属角色,可以登录BIM360项目管理界面,进入项目设置的「角色」选项,这里显示的就是项目实际启用的角色(包括从账户继承但在项目中激活的,以及项目自定义的角色)。你可以把这里的角色ID和接口返回的角色ID做映射,过滤出项目专属的角色。
需要说明的是,目前官方的industry_roles接口确实没有直接返回项目专属角色的参数,所以通过项目成员接口提取是最直接有效的方案。
内容的提问来源于stack exchange,提问作者Janne
相关产品推荐
相关产品推荐

