Oauth 使用Autodesk A360中的URN创建查看器应用程序
我创建了一个查看器应用程序,它使用两条腿的身份验证,并显示已上载到我自己的bucket中的项目。现在,我希望能够查看已上载到Autodesk A360的项目,而不是在我自己的bucket中查看该项目 为此,我已完成以下步骤:Oauth 使用Autodesk A360中的URN创建查看器应用程序,oauth,autodesk-data-management,autodesk-viewer,Oauth,Autodesk Data Management,Autodesk Viewer,我创建了一个查看器应用程序,它使用两条腿的身份验证,并显示已上载到我自己的bucket中的项目。现在,我希望能够查看已上载到Autodesk A360的项目,而不是在我自己的bucket中查看该项目 为此,我已完成以下步骤: 实施了三条腿身份验证(项目的A360帐户和正在验证的帐户相同) 访问了中心、项目和文件,如中所述 没有下载项目并将其上传到我自己的bucket(如中所述),而是获得了identificator (urn:adsk.wipprod:fs.file:vf.6bVr4EVDSa
- 实施了三条腿身份验证(项目的A360帐户和正在验证的帐户相同)
- 访问了中心、项目和文件,如中所述李>
- 没有下载项目并将其上传到我自己的bucket(如中所述),而是获得了identificator
(
)并将其转换为URL友好的Base64(urn:adsk.wipprod:fs.file:vf.6bVr4EVDSaOpykczeQYR2Q?version=1
)dxjuomfkc2sub2jqzwn0czpvcy5vymply3q6bxktynvja2v0l215lwf3zxnvwbwbwwwwwwutzm9yz2utzmlsz5ydnq=
如果您需要任何其他代码,请务必询问。您可以在GiHub上查看以下三个示例,所有三个示例都可以访问A360上的CAD模型,并在查看器中显示它们: 数据管理APIP示例: 模型衍生API样本: 实时往返BIM编辑器: roomedit3dv2往返锻造BIM edi提供了其工作的证明,8分钟演示记录:
祝你好运 在将我的解决方案与Augusto Goncalves在的应用程序进行比较后,我终于设法解决了这个问题
- 不像中所述那样下载项目并将其上传到我自己的bucket,而是从文件请求的结果中获取标识符(
),并将其转换为URL友好的Base64(urn:adsk.wipprod:fs.file:vf.6bVr4EVDSaOpykczeQYR2Q?version=1
)dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXktYnVja2V0L215LWF3ZXNvbWUtZm9yZ2UtZmlsZS5ydnQ=
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*/);
使用此解决方案需要对查看器的实例化进行更改。我没有按照中所述进行更改,而是将其更改为上面示例代码的
index.js
文件中的解决方案。我已从开发团队得到确认,您不应使用ACM头或依赖WIPDM urn来加载di这将在将来某个时候停止工作。我们将直接在派生服务中添加一些逻辑来抽象它,并允许您这样做
不幸的是,目前,我们更倾向于使用A360项目版本的存储URN,并发布一个定制svf作业,该作业将生成一组您可以依赖的新视图
你可以在我的文章中看到一个具体的例子
数据管理API示例和模型衍生API示例给出以下错误消息:
{“developerMessage”:“授权代码/刷新令牌已过期或无效/重定向uri必须与授权请求中的值相同。”,“userMessage”:“errorCode”:“AUTH-004”,“更多信息”:"http://developer-stg.api.autodesk.com/documentation/v1/errors/AUTH-004"}
我昨天也看到了这条消息。对此我很抱歉。我会问我的同事。我昨天通过清除缓存和重新加载修复了它,但尝试了几次。我希望在我的Forge DevCon演示中效果更好!@danrodi:在开发人员门户创建开发人员密钥和机密时,需要指定一个“回调URL”"。然后,在您的OAuth代码中,您必须使用相同的URL。您能检查一下吗?@AugustoGoncalves我指定了回调URL,并且在我的OAuth代码中也使用了相同的URL。唯一的问题是,*for port是否可以接受。谢谢!我认为这应该被记录下来!我上面回答的哪一部分您不清楚?这是一个很好的理由是没有文档记录的。您不应该使用您描述的ACM命名空间方法,因为它将在将来某个时候停止工作。让我重复一下我之前说过的话:我已经从开发中得到确认,您不应该使用ACM标头或依赖WIPDM urn直接加载您的可视文件。我们将添加一些逻辑直接在衍生服务中提取并允许您这样做。目前,您更喜欢使用A360项目版本的存储URN并发布自定义svf作业
//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