代码之家  ›  专栏  ›  技术社区  ›  user8246956

未经授权通过forge API下载SVF衍生品

  •  0
  • user8246956  · 技术社区  · 7 年前

    extract.autodesk.io 模块( SVF model derivative downloaded as an (almost) empty ZIP file (Autodesk Forge) 模块,在两条腿的上下文中。

    以下是我试图实现的一个简单示例:

    var ForgeSDK = require("forge-apis");
    
    /* The next four lines are filled with my credentials and URN values 
     * (this shouldn't be the problem, since getting the manifest for the URN
     * is performed successfully) */
    var client_id = "...";
    var client_secret = "...";
    var urn = "...";
    var derivative_urn = "...";
    
    var derivatives = new ForgeSDK.DerivativesApi();
    var autoRefresh = true;
    var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id, 
        client_secret, [
            "data:read", "data:write", "bucket:read", "bucket:write"
        ], autoRefresh);
    
    oAuth2TwoLegged.authenticate().then(function(credentials) {
        derivatives.getDerivativeManifest(urn, derivative_urn, {}, credentials, oAuth2TwoLegged).then(function(content) {
            console.log(content);
        }).catch(function(err) {
            if (err) {
                console.log(err);
            }
        })
    });
    

    我得到以下错误:{statusCode:401,statusMessage:'未授权'}。这是一个范围问题吗?

    提前多谢!

    extract.autodesk.io 提供了一个很好的方法,但我觉得使用 对象在另一个上下文中转置并不那么简单。这个 模块应该无缝地完成这项工作(或者我遗漏了什么)。

    :根据Augusto的建议,我使用了最基本的命令(即cUrl)从IFC文件下载信息。下面的前两个命令成功运行(加载清单和PNG屏幕截图文件)。SVF的下载似乎也很好,除了ZIP文件只包含两个JSON文件(manifest.JSON和metadata.JSON),以及三个空目录(geometry、material、scene)。

    代码如下:

    # Get manifest for the IFC file
    curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest" > manifest.json
    
    # Get a PNG related to the IFC file
    curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_PNG" > image.png
    
    # Get the SVF converted from the IFC file
    curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_SVF" > output.zip
    

    知道吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Augusto Goncalves    7 年前

    正在查看 the implementation npm forge-apis@0.4.1 ,签名为:

    this.getDerivativeManifest = function(urn, derivativeUrn, opts, oauth2client, credentials)
    

    但你的代码似乎在使用 oauth2client credentials 以相反的顺序。在这一改变之后,它在这里工作得很好。

    var derivatives = new ForgeSDK.DerivativesApi();
    var autoRefresh = true;
    var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id, 
        client_secret, [
            "viewables:read"
        ], autoRefresh);
    
    oAuth2TwoLegged.authenticate().then(function(credentials) {
        derivatives.getDerivativeManifest(urn, derivative_urn, {}, oAuth2TwoLegged, credentials).then(function(content) {
            console.log(content);
        }).catch(function(err) {
            if (err) {
                console.log(err);
            }
        })
    });
    

    建议仅使用 viewables:read 范围,因为您不需要所有这些额外的权限(至少对于此代码)。

        2
  •  0
  •   user8246956 user8246956    7 年前

    bubble.js 功能来自 extract.autodesk.io

    谢谢@Augusto的帮助。仍然很想知道为什么“基本”旋度方法没有按预期工作。。。