在 BIM360 OSS 中为对象创建签名 URL
Posted
技术标签:
【中文标题】在 BIM360 OSS 中为对象创建签名 URL【英文标题】:Create Signed URL for Object in BIM360 OSS 【发布时间】:2020-04-20 00:38:27 【问题描述】:我正在尝试为设计自动化工作流程设置签名 URL,该工作流程由 BIM360 OSS 内的 Webhook 触发。如果添加了文件,则 webhook 会触发端点以启动设计自动化。网络钩子正在工作。设计自动化也在起作用。如果我尝试将两者都连接起来,就会出现问题。我正在尝试创建文件的签名 URL,就像 Petr Broz link *** 的这篇文章中所建议的那样。
要使用此 API,需要使用由 2-Legged-Auth 获得的令牌,该令牌可用于所有必要的范围。在 Webhook 的响应中是文件夹和版本的 ID。 API 正在识别 ID。 问题出现在此端点响应创建签名url:https://developer.api.autodesk.com/oss/v2/buckets/:bucketKey/objects/:objectKey/signed
我使用 wip.dm.emea 作为存储桶,因为该文件存储在 EU BIM360 OSS 中。
响应是403 Forbidden:
"reason": "Only the bucket creator is allowed to access this api."
是否有可能像本例 Forge how to Download File 一样获得文件 ID? 因为此解决方案需要 3-Legged-Auth 流程,而这对于完整的自动化来说是不可能的。
让我产生疑问的是,您可以在 Forge 平面中实现此工作流程。但不是在 BIM360 中,我无法控制系统创建的存储桶!?
我认为这是 Forge API 和 BIM360 实现之间的架构不匹配!?将来会有解决方案吗?
最好的问候 一月
【问题讨论】:
【参考方案1】:不幸的是,我可以确认目前无法为您的 BIM360 存储创建签名 URL,正如错误消息所述,端点需要存储桶所有者执行此操作,这就是现在的情况。但我同意你的看法,这应该是 Forge OSS 和 BIM360 实现之间的架构不匹配,并且我们的系统中已经提出了请求,请保留“CPOSS-1066”与我们联系以了解进度。
至于目前的方式,您可以保留 3 legged token 并将其用于输出 Url 以及 onComplete() 回调,我有博客文章 https://forge.autodesk.com/blog/upload-your-design-automation-output-file-bim360-docs 详细说明了工作方式,希望对您有所帮助此刻。
【讨论】:
感谢您的快速回复。我熟悉您建议的解决方案。正如我在我们的 Worklfow 中提到的,没有 3 Legged 可用,因为在缺少 Userinteraction 期间,Webhook 是起点,并且没有 Token 可查。但我会期待并关注“CPOSS-1066”的进展。 如果是这样,您是否检查过这个同样从 webhook 启动设计自动化作业的示例,它实际上使用数据库来保存 userId 和令牌,并在触发 webhook 时发送 userId github.com/Autodesk-Forge/forge-checkmodels-createissues-revit/… 好的,我做了更深入的研究。也许您可以帮助我了解 3 Legged Token 的生成位置?我了解令牌存储在 MongoDB 存储中,并在需要时恢复。但是貌似需要登录其他App才能获取初始Token?还是平面BIM360客户端(不是API)由Webhook生成和存储的初始令牌?正如我所提到的,我们正在寻找更简单、更清洁的处理方式,而不是使用 Workers 在正在进行的过程中刷新令牌。提前谢谢!!! 是的,对于这个解决方案,您必须登录到您的应用程序以生成初始 3 legged 令牌一次,该令牌是访问 BIM360 中的用户数据所必需的。之后,由于您在数据库中保留了 userId 和 token,因此您始终可以通过刷新 userId 的 token 来检索有效的 token。我相信这是解决这个问题的当前方法。以上是关于在 BIM360 OSS 中为对象创建签名 URL的主要内容,如果未能解决你的问题,请参考以下文章
在 s3 aws 中为对象创建签名 url 时如何设置内容类型?
Autodesk Forge:如何在 BIM 360 Docs 中查找模型的 svf 文件的 URL