You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BIM 360 Viewer部分模型提示无权限,如何无需网页预打开直接访问?

问题描述

通过Autodesk Forge文档管理API将3D模型上传至BIM 360后,使用Viewer API加载模型时,部分模型会弹出权限错误提示:

No Access. Sorry. You don't have the required privileges to access this item. Please contact author

仅特定模型出现该问题,目前临时解决方法是先通过BIM 360网页端打开模型,之后Viewer API就能正常访问。需要实现无需网页预打开,直接从程序端加载模型的功能。

当前使用的Viewer初始化及加载代码如下:

var viewer;
var options = {
    env: 'AutodeskProduction2',
    api: 'streamingV2',  // for models uploaded to EMEA change this option to 'streamingV2_EU'
    getAccessToken: function(onTokenReady) {
        var token = [access token];
        var timeInSeconds = 3600; // Use value provided by APS Authentication (OAuth) API
        onTokenReady(token, timeInSeconds);
            }
        };
Autodesk.Viewing.Initializer(options, function() {

    var htmlDiv = document.getElementById('forgeViewer');
    viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
    var startedCode = viewer.start();
            if (startedCode > 0) {
            console.error('Failed to create a Viewer: WebGL not supported.');
            return;
            }

        console.log('Initialization complete, loading a model next...');

            });
var htmlDiv = document.getElementById('forgeViewer');
viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv, {});

var documentId = [document urn];
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);

function onDocumentLoadSuccess(viewerDocument) {
// viewerDocument is an instance of Autodesk.Viewing.Document
var defaultModel = viewerDocument.getRoot().getDefaultGeometry();
    viewer.loadDocumentNode(viewerDocument, defaultModel);
    }

function onDocumentLoadFailure() {
        console.error('Failed fetching Forge manifest');
}

原因分析

该问题源于模型上传后BIM 360未完成权限索引同步:直接通过API上传的模型,部分情况下BIM 360不会自动触发权限同步流程,导致Viewer请求时无法获取有效权限。而通过网页端打开模型时,BIM 360会触发后台同步,后续Viewer请求即可正常访问。


解决方案

1. 确保Access Token权限范围正确

生成Token时必须包含以下scope:

  • data:read:允许读取文档数据
  • account:read:允许访问BIM 360项目账户信息
  • bucket:read:允许读取存储桶资源

2. 加载模型前触发权限同步

在初始化Viewer后,先调用Forge Data Management API获取BIM 360文档详情,触发后台权限同步流程。

3. 修复Viewer重复实例化问题

原代码中两次创建GuiViewer3D实例会导致资源冲突,需合并初始化与加载逻辑。


修改后的代码
var viewer;
var options = {
    env: 'AutodeskProduction2',
    api: 'streamingV2',
    getAccessToken: function(onTokenReady) {
        // 替换为你的有效Access Token
        var token = [access token];
        var timeInSeconds = 3600;
        onTokenReady(token, timeInSeconds);
    }
};

// 调用Data Management API触发BIM 360权限同步
function triggerBim360PermissionSync(projectId, itemId, token) {
    return fetch(`https://developer.api.autodesk.com/data/v1/projects/${projectId}/items/${itemId}`, {
        headers: {
            'Authorization': `Bearer ${token}`,
            'Content-Type': 'application/json'
        }
    }).then(response => response.json());
}

// 初始化Viewer并加载模型
Autodesk.Viewing.Initializer(options, function() {
    var htmlDiv = document.getElementById('forgeViewer');
    viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
    var startedCode = viewer.start();
    
    if (startedCode > 0) {
        console.error('Failed to create a Viewer: WebGL not supported.');
        return;
    }

    console.log('Initialization complete, syncing document permissions...');
    
    // 替换为你的BIM 360项目ID、文档Item ID和Access Token
    var projectId = [your bim360 project id];
    var itemId = [your document item id];
    var token = [access token];
    
    triggerBim360PermissionSync(projectId, itemId, token)
        .then(() => {
            var documentId = [document urn];
            Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
        })
        .catch(err => {
            console.error('Failed to sync permissions:', err);
        });
});

function onDocumentLoadSuccess(viewerDocument) {
    var defaultModel = viewerDocument.getRoot().getDefaultGeometry();
    viewer.loadDocumentNode(viewerDocument, defaultModel);
}

function onDocumentLoadFailure() {
    console.error('Failed fetching Forge manifest');
}

内容的提问来源于stack exchange,提问作者iceybob3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:52:44