Revit Design Automation访问ACC模型时认证异常求助
问题分析与解决方案
核心原因
Revit Design Automation的RevitCoreConsole不会自动使用WorkItem传入的adsk3LeggedToken完成ACC登录,必须在插件代码中显式调用登录API建立认证会话。从日志里的LoginUserId为空可以确认:当前运行会话未完成用户身份认证,因此无法访问云端模型。
具体修复步骤
1. 从环境变量读取3LeggedToken
DA会自动将WorkItem中传入的adsk3LeggedToken注入到运行环境的ADSK_3LEGED_TOKEN变量中,插件需先读取该变量:
string token = Environment.GetEnvironmentVariable("ADSK_3LEGED_TOKEN"); if (string.IsNullOrEmpty(token)) { throw new InvalidOperationException("未获取到3LeggedToken"); }
2. 显式调用Revit登录API完成认证
在调用ConvertCloudGUIDsToCloudPath之前,必须通过Revit API完成用户登录:
Application app = sender as Application; // 使用3LeggedToken登录到ACC app.LoginUsing3LeggedToken(token); // 验证登录状态 string loginUserId = app.LoginUserId; if (string.IsNullOrEmpty(loginUserId)) { throw new InvalidOperationException("3LeggedToken登录失败"); }
3. 验证Token的有效性与权限
- 确认Token包含
data:read、data:write权限(覆盖ACC模型访问场景) - 检查Token有效期,避免运行时过期
- 确保Token的受众(Audience)为
https://developer.api.autodesk.com(DA场景下的正确配置)
4. 检查配置正确性
- 确认WorkItem中
adsk3LeggedToken字段拼写无误 - 无需在Activity的CommandLine中传递Token,DA会自动处理环境变量注入
补充说明
日志中的Username: acesuser是DA的默认系统用户,并非你的ACC认证用户。只有通过LoginUsing3LeggedToken切换到你的认证身份后,才能正常访问ACC模型资源。
内容的提问来源于stack exchange,提问作者Peter S.
相关产品推荐
相关产品推荐

