假设BIM360管理员已经将我的BIM360应用程序从BIM360应用程序商店添加到他/她的BIM360帐户,并完成了配置步骤。
之后,当用户单击“打开”链接(截图中的示例)时,将打开我的应用程序中的一个页面。
在这个页面中,我需要确定这个特定的BIM360帐户在我的应用程序中是否已经有了相应的帐户。
为了进一步澄清,我的应用程序是一个多租户云服务,每个租户/帐户都绑定了一个BIM360帐户-而不是单个BIM360用户。因此,无论登录到BIM360页面的BIM360用户是谁,我都需要将他/她重定向到与BIM360帐户对应的帐户。
如果在我的应用程序中没有相应的帐户(这将是第一次访问的情况),我必须将用户重定向到‘注册’页面。
问:当用户通过BIM360页面中的“打开”链接打开我的应用程序时,如何找到BIM360帐户ID?
一种可能的解决方法(真的是黑客)是在HTTP头(在我的页面上)中使用‘referrer’来抓取BIM360页面的URL,并从中抓取帐户ID。
执行此操作的正确方法是什么?你能给我指一段示例代码吗?
谢谢

发布于 2018-04-19 20:02:40
当最终用户打开你的应用程序时,你应该要求使用他/她的Autodesk帐户登录,这会产生一个3条腿的OAuth访问令牌。
这样,你的应用程序就可以调用GET Hubs,它会返回用户有权访问的集线器列表,而你的应用程序也有权访问。由于这包括所有集线器,请检查attribute.extension.type == hubs:autodesk.bim360:Account,集线器id将是BIM360帐户。您还可以检查带有b.前缀的集线器id。
请注意,集线器ID具有b.前缀,您需要删除它才能获得正确的BIM360帐户id。
最后,访问你的应用程序的最终用户可能会有多个BIM 360 Docs集线器配置到你的应用程序,例如,一个与多个项目合作的承包商,所以请考虑这种情况。
有关其他一些注意事项,请查看this article。
编辑
来自评论(23/4/2018):
你建议的解决方法并不能真正解决问题。我需要一种方法来找出用户点击“打开”链接的页面的BIM360帐户ID。
在用户点击“打开”后,你的应用程序需要请求登录,这会给你的应用程序一个3条腿的令牌。这样,调用GET Hubs endpoint,filter hubs for BIM 360 Docs,如果不止一个,要求用户选择集线器/帐户,那么您就有了帐户ID。
https://stackoverflow.com/questions/49916560
复制相似问题