使用Autodesk A360中的URN创建查看器应用程序

时间:2016-06-15 12:14:48

标签: oauth autodesk-data-management autodesk-viewer

我创建了一个使用两条腿身份验证的查看器应用程序,并显示已上传到我自己的存储桶的项目。现在我不想在自己的桶中查看项目,而是希望能够查看已经上传到Autodesk A360的项目。

为此我完成了以下步骤:

因此,转换后的URN应与A360用于其自己的查看器相同。

在我自己的应用程序中使用URN查看项目时,网络控制台显示以下错误消息: Error message

查看特定请求时,会返回以下响应: Response

我还确保转换后的URN等于A360正在使用的URN。为此,我将其与A360的响应进行了比较: URN

因此,当观众在A360工作时,我想知道A360中的项目是否也可以在我自己的应用程序中查看(A360查看器已经存在该存储桶,所以没有理由重复相同的过程存储桶创建和上传文件)。 如果可以使用与URN相同的项目,那么我也想知道为什么请求是未经授权的。

如果您需要任何其他代码,请务必询问。

3 个答案:

答案 0 :(得分:1)

您可以在GiHub上查看以下三个样本,这三个样本都在A360上访问CAD模型并在查看器中显示:

数据管理APIP样本:https://github.com/Developer-Autodesk/data.management.api-nodejs-sample

模型衍生API示例:https://github.com/Developer-Autodesk/model.derivative.api-nodejs-sample

实时往返BIM编辑器:https://github.com/jeremytammik/model.derivative.api-nodejs-sample-roomedit3d

它的工作原理由roomedit3dv2往返Forge BIM edi提供,8分钟演示录制:

https://www.youtube.com/watch?v=bDI5YX7PDP8

祝你好运!

答案 1 :(得分:1)

将我的解决方案与Augusto Goncalves在https://github.com/Developer-Autodesk/data.management.api-nodejs-sample的申请进行比较后,我终于设法解决了这个问题。

  
      
  • https://developer.autodesk.com/en/docs/data/v2/tutorials/app-managed-bucket/所述,不是下载项目并将其上传到我自己的存储桶,而是从文件请求的结果中获取标识符(urn:adsk.wipprod:fs.file:vf.6bVr4EVDSaOpykczeQYR2Q?version=1)并将其转换为URL友好的Base64(dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXktYnVja2V0L215LWF3ZXNvbWUtZm9yZ2UtZmlsZS5ydnQ=)。
  •   

虽然此方法返回正确的URN,但除了URN之外,还必须将acmsession添加到请求中。从上面的示例代码中,我设法对以下请求进行反向工程:

curl -X 'POST' \
 -H "Authorization: Bearer $token" -H 'Content-Type: application/json' \
 -v 'https://developer.api.autodesk.com/oss-ext/v1/acmsessions' -d \
 '{
    "application": "autodesk",
    "x-ads-acm-check-groups": "true",
    "x-ads-acm-namespace": "WIPDM"
  }'

此请求的结果返回一个代码,该代码必须添加到URN。它应该添加到被调用的方法中,而不是将其添加到请求URL的末尾:

viewer.load(doc.getViewablePath(geometryItems[0]), null, null, null, doc.acmSessionId /*session for DM*/);

使用此解决方案需要对查看器的实例化进行更改。我没有像https://developer.autodesk.com/en/docs/viewer/v2/tutorials/basic-viewer/中所描述的那样执行此操作,而是将其更改为上面示例代码的index.js文件中的解决方案。

答案 2 :(得分:1)

我已得到开发团队的确认,您不应使用ACM标头或依赖WIPDM网址直接加载您的可见广告。这将在未来的某个时候停止工作。我们将在衍生服务中直接添加一些逻辑来抽象它,并允许您这样做。

目前不幸的是,我更喜欢使用A360项目版本中的存储URN并发布一个自定义的svf作业,它将生成一组你可以信赖的新视图。

您可以在我的forge sample

中查看具体示例
//pick the last version by default
var version = item.versions[ item.versions.length - 1 ]

var storageUrn = window.btoa(
    version.relationships.storage.data.id)

// !IMPORTANT: remove all padding '=' chars
// not accepted by the adsk services

storageUrn = storageUrn.replace(new RegExp('=', 'g'), '')

var urn = version.relationships.derivatives.data.id

console.log('A360 URN: ' + urn)  // -> just for info
console.log('Storage URN: ' + storageUrn) // -> use this URN to POST svf and trigger translation