DA4R调用APS API打开ACC文件遇权限异常:用户B授权失败排查
我开发了一款Web应用,支持用户通过APS API提交Revit设计自动化(DA4R)工作项。自动化流程通过以下代码从Autodesk Construction Cloud(ACC)打开文件:
ModelPath cloudModelPath = ModelPathUtils.ConvertCloudGUIDsToCloudPath(ModelPathUtils.CloudRegionUS, ProjectGuid, ModelGuid); OpenOptions openOptions = new OpenOptions(); openOptions.AllowOpeningLocalByWrongUser = true; openOptions.Audit = false; openOptions.IgnoreExtensibleStorageSchemaConflict = true; Document doc = rvtApp.OpenDocumentFile(cloudModelPath, openOptions);
测试发现,用户A(本人)可正常运行,但用户B使用相同模型(相同Project GUID和Model GUID)时失败,报错信息为:
Autodesk.Revit.Exceptions.RevitServerUnauthorizedException: You are unauthorized to access this hub/project or the hub/project doesn't exist. Detail is One or more errors occurred. at Autodesk.Revit.DB.ModelPathUtils.ConvertCloudGUIDsToCloudPath(String region, Guid projectGuid, Guid modelGuid)
已确认用户B拥有对应Hub和项目访问权限,可在ACC中选择文件并获取正确GUID,排除Hub/项目不存在问题。当前运行的是Revit 2022核心引擎,排除授权问题,请问除Hub/项目访问权限外,DA4R用户还需哪些权限以避免该异常?
除了Hub和项目级别的访问权限外,还需要检查以下几类权限和配置:
文件级别的直接访问权限:确认用户B在ACC中拥有该具体Revit模型文件的
查看或编辑权限。项目权限不自动覆盖所有文件权限,若该模型被单独设置了权限限制,用户B将无法通过DA4R访问。APS OAuth令牌的权限范围:用户B提交DA4R工作项时使用的OAuth令牌,必须包含以下核心权限范围:
data:read:用于读取ACC中的文件数据account:read:用于验证Hub和项目的访问权限project:read:用于获取项目内的资源信息
确保令牌的受众(Audience)设置为https://developer.api.autodesk.com,且未过期。
DA4R应用的访问权限:检查APS平台上的DA4R应用配置,确认用户B被添加到应用的授权访问列表中(若应用设置为私有)。只有被授权的用户才能通过该应用提交并执行DA4R工作项。
云工作共享模型的协作权限:若该Revit模型是工作共享云模型,需确认用户B被添加为该模型的协作成员,拥有
打开模型的权限。工作共享模型的权限独立于项目权限,需单独配置。Revit设计自动化的引擎权限:确保用户B的账号被授权使用Revit 2022的设计自动化引擎。部分企业环境中,可能会限制特定用户使用特定版本的DA4R引擎。
内容的提问来源于stack exchange,提问作者Blake Hageman

