Autodesk Forge 尝试在线访问 API 时出错

Posted

技术标签:

【中文标题】Autodesk Forge 尝试在线访问 API 时出错【英文标题】:Autodesk Forge Error trying to access the API online 【发布时间】:2021-08-16 05:14:51 【问题描述】:

我在在线服务器上加载 3D 模型时遇到问题,显示的错误与访问 Forge API 有关,本地可以正常运行,但是当安装在服务器上或创建网站时,标记以下错误“加载资源失败:服务器响应状态为 404(未找到)”,然后是“onDocumentLoadFailure() - errorCode:7”。 正如我评论的那样,我发现奇怪的是,在本地,它是有效的。附上显示错误的代码段。

 function getAccessToken() 
    var xmlHttp = null;
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", '/api/forge/toke', false); //Address not found
    xmlHttp.send(null);
    return xmlHttp.responseText;

非常感谢您。

【问题讨论】:

【参考方案1】:

我已经找到了问题。当我进行部署时,我必须更改向公众发出请求的 url 或域的名称。例如:mywebsite.com/aplication-name/api/forge/token。

【讨论】:

【参考方案2】:

你确定你在本地运行的代码和你部署的代码真的一样吗?

getAccessToken 函数似乎不正确,原因如下:

首先,URL 中似乎有一个拼写错误 - 不应该是 /api/forge/token 而不是 /api/forge/toke? 更重要的是,HTTP请求是异步的,也就是说它不能在调用xmlHttp.send()后立即返回响应。您可以在https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest 中找到有关XMLHttpRequest 用法的更多详细信息。 最后,假设函数被传递给Autodesk.Viewing.Initializer选项,它应该使用传递给它的回调参数返回令牌(如https://forge.autodesk.com/en/docs/viewer/v7/developers_guide/viewer_basics/initialization/#example所示)。

这样,您的 getAccessToken 应该看起来更像这样(使用更现代的 fetch 和 async/await):

async function getAccessToken(callback) 
  const resp = await fetch('/api/forge/token');
  const json = await resp.json();
  callback(json.access_token, json.expires_in);

【讨论】:

您好,非常感谢您抽出宝贵时间回答我的问题。我已经发现了问题。当我进行部署时,我必须更改向公众发出请求的 url 或域的名称。例如:mywebsite.com/api/forge/token。在我写的时候我犯了一个错误的问题,这就是为什么它说“toke”而不是“token”。

以上是关于Autodesk Forge 尝试在线访问 API 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Autodesk Forge API 问题创建照片附件?

AutoDesk Forge API 上传文件失败

使用 Autodesk Forge API 检索“描述”或“自定义属性”字段

Autodesk Forge API - 补丁项输入错误

Autodesk Forge Data Manager Api 重命名项目

尝试在 Autodesk Forge / Bim360 中显示房间信息