【问题标题】:How to read all data using Revit API?如何使用 Revit API 读取所有数据?
【发布时间】:2021-03-28 08:25:55
【问题描述】:

我们生成了客户端 ID 和秘密 ID。而且我们还使用内部令牌获得了访问令牌。

在运行项目时,我们可以查看我们使用 forge bucket 上传的 Revit 文件。

然后再次尝试使用 API 在 Revit 模型中获取所有元素(建筑物、地板、房间、设备等)。 使用这个链接:https://forge.autodesk.com/en/docs/model-derivative/v2/reference/http/urn-metadata-GET/

我们在 onDocumentLoadSuccess 这个事件中使用了 API。

我们正在传递 url:https://developer.api.autodesk.com/modelderivative/v2/designdata/:urn/metadata headers :'Authorization': 'Bearer' + access_token.

在这个我们传递 urn,access_token 参数也很好。 但是我们遇到“令牌没有此请求的权限”错误。(我们已经通过API获得了访问令牌。但是我们第二次遇到错误)

如何解决这个问题,请帮助我。

【问题讨论】:

    标签: autodesk-forge forge


    【解决方案1】:

    请注意,Forge 服务提供的不同端点需要特定的“范围”,必须为其生成访问令牌。例如,根据GET :urn/metadata docs,此端点要求生成具有“data:read”范围的访问令牌。

    另外,请注意模型衍生服务处理的设计属性实际上是由不同的端点获得的——不是使用GET :urn/metadata,而是使用GET :urn/metadata/:guid/properties

    【讨论】:

    • 您提到对developer.api.autodesk.com/modelderivative/v2/designdata/:urn/… 的请求是在“onDocumentLoadSuccess”事件期间发出的。这是否意味着您正在从浏览器调用此 API?如果是这样,您确定您使用的是正确的令牌吗?因为通常您应该向浏览器发送任何具有更多权限(例如创建或删除数据)的访问令牌。
    • 最初我们使用它作为访问令牌(它最初工作正常) InternalToken = await Get2LeggedTokenAsync(new Scope[] { Scope.BucketCreate, Scope.BucketRead, Scope.DataRead, Scope.DataCreate });我们再次将相同的令牌传递给下一个 API 调用。
    • 我想知道的是:你是在服务器端还是在客户端生成这个令牌?如果它是在服务器端生成的,那么您究竟是如何将令牌传递给客户端的?如果您可以为您的问题提供更多代码 sn-ps,解释您到底在做什么,我们将能够为您提供更多帮助。
    • 谢谢你,我们知道了。我们可以得到所有结果
    • 生成token时只需要保留Scope.DataRead
    猜你喜欢
    • 2020-07-08
    • 2018-09-04
    • 2020-10-15
    • 2013-01-07
    • 2021-03-27
    • 2019-10-05
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多