Autodesk Forge 尝试在线访问 API 时出错
Autodesk Forge Error trying to access the API online
我在在线服务器上加载 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;
}
非常感谢您。
你确定你运行本地的代码和你部署的代码真的一样吗?
getAccessToken
函数似乎不正确,原因如下:
- 首先,URL 中似乎有一个拼写错误 - 不应该是
/api/forge/token
而不是 /api/forge/toke
吗?
- 更重要的是,HTTP请求是异步的,也就是说它不能return调用
xmlHttp.send()
后立即得到响应。您可以在 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest. 中找到有关 XMLHttpRequest
用法的更多详细信息
- 最后,假设函数被传递给
Autodesk.Viewing.Initializer
选项,它应该 return 使用传递给它的回调参数的令牌(如 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);
}
我已经找到问题了。当我进行部署时,我必须更改请求 public 或域名称的 url。例如:我的网站.com/aplication-name/api/forge/token.
我在在线服务器上加载 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;
}
非常感谢您。
你确定你运行本地的代码和你部署的代码真的一样吗?
getAccessToken
函数似乎不正确,原因如下:
- 首先,URL 中似乎有一个拼写错误 - 不应该是
/api/forge/token
而不是/api/forge/toke
吗? - 更重要的是,HTTP请求是异步的,也就是说它不能return调用
xmlHttp.send()
后立即得到响应。您可以在 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest. 中找到有关 - 最后,假设函数被传递给
Autodesk.Viewing.Initializer
选项,它应该 return 使用传递给它的回调参数的令牌(如 https://forge.autodesk.com/en/docs/viewer/v7/developers_guide/viewer_basics/initialization/#example 所示)。
XMLHttpRequest
用法的更多详细信息
这样,您的 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);
}
我已经找到问题了。当我进行部署时,我必须更改请求 public 或域名称的 url。例如:我的网站.com/aplication-name/api/forge/token.