如何在Forge Viewer加载ACC Docs中的Revit模型?errorCode:4问题排查
Error Code 4 原因分析与ACC Docs模型加载方案
错误码4的核心原因
errorCode:4 在Forge Viewer中代表资源访问权限不足或模型未完成预处理,具体常见场景包括:
- 访问令牌的
scope未包含data:read和bucket:read权限,导致无法读取ACC Docs中的模型数据 - 上传的Revit文件尚未完成Forge自动翻译流程,衍生模型还未生成
- URN未进行正确的Base64URL编码(需替换
+/为-_并去除末尾=) - 创建的ACC应用未关联到目标项目,无权限访问该项目下的文档
正确加载ACC Docs中Revit模型的步骤
1. 确保令牌权限正确
获取访问令牌时,必须指定包含data:read的scope,请求示例:
curl -X POST "https://developer.api.autodesk.com/authentication/v2/token" \ -F "client_id=YOUR_CLIENT_ID" \ -F "client_secret=YOUR_CLIENT_SECRET" \ -F "grant_type=client_credentials" \ -F "scope=data:read bucket:read"
2. 验证模型翻译状态
调用Forge Model Derivative API检查衍生模型是否生成完成:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ "https://developer.api.autodesk.com/modelderivative/v2/designdata/BASE64URL_URN/manifest"
返回结果中status字段为success时,才可加载模型;若为pending则等待翻译完成,failed则需重新上传文件触发翻译。
3. 正确处理URN
将ACC Docs中获取的原始URN进行Base64URL编码:
- 对原始URN做标准Base64编码
- 替换
+为-,/为_ - 去除末尾所有
=符号
最终传入Viewer的格式为urn:BASE64URL_ENCODED_URN
4. 关联应用到ACC项目
在ACC项目的管理界面,将你的应用添加到「集成应用」列表中,赋予应用访问该项目文档的权限。
5. Viewer加载代码示例
const initOptions = { env: 'AutodeskProduction', accessToken: 'YOUR_VALID_ACCESS_TOKEN' }; Autodesk.Viewing.Initializer(initOptions, () => { const viewerContainer = document.getElementById('viewer'); const viewer = new Autodesk.Viewing.GuiViewer3D(viewerContainer); viewer.start(); const encodedUrn = 'YOUR_BASE64URL_ENCODED_URN'; Autodesk.Viewing.Document.load( `urn:${encodedUrn}`, (doc) => { const defaultView = doc.getRoot().getDefaultGeometry(); viewer.loadDocumentNode(doc, defaultView); }, (err) => { console.error('模型加载失败:', err); } ); });
内容的提问来源于stack exchange,提问作者Juiin Hao
相关产品推荐
相关产品推荐

