通过forge-apis下载SVF衍生品未获授权
Download of SVF derivatives through forge-apis not authorized
在使用 extract.autodesk.io 模块 () 解决了最近的 post 之后,我仍然无法下载在两条腿的上下文中,仅使用官方 forge-apis 模块的 SVF 模型导数。
这是我试图实现的目标的最小示例:
var ForgeSDK = require("forge-apis");
/* The next four lines are filled with my credentials and URN values
* (this shouldn't be the problem, since getting the manifest for the URN
* is performed successfully) */
var client_id = "...";
var client_secret = "...";
var urn = "...";
var derivative_urn = "...";
var derivatives = new ForgeSDK.DerivativesApi();
var autoRefresh = true;
var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id,
client_secret, [
"data:read", "data:write", "bucket:read", "bucket:write"
], autoRefresh);
oAuth2TwoLegged.authenticate().then(function(credentials) {
derivatives.getDerivativeManifest(urn, derivative_urn, {}, credentials, oAuth2TwoLegged).then(function(content) {
console.log(content);
}).catch(function(err) {
if (err) {
console.log(err);
}
})
});
我收到以下错误:{ statusCode: 401, statusMessage: 'Unauthorized' }。是范围问题吗?
非常感谢!
P.S.: 我知道 extract.autodesk.io 提供了一种很好的方法,但我觉得使用 气泡 对象在另一个上下文中转置并不是那么简单。 forge-apis 模块应该可以无缝地完成这项工作(或者我遗漏了什么)。
Update:按照 Augusto 的建议,我使用了最基本的命令(即 cUrl)从 IFC 文件下载信息。下面的前两个命令成功运行(下载清单和 PNG 屏幕截图文件)。 SVF 的下载似乎也能正常工作,除了 ZIP 文件只包含两个 JSON 文件(manifest.json 和 metadata.json),以及三个空目录(geometry,material, 场景).
代码如下:
# Get manifest for the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest" > manifest.json
# Get a PNG related to the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_PNG" > image.png
# Get the SVF converted from the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_SVF" > output.zip
有什么想法吗?
看the implementation for npm forge-apis@0.4.1,签名是:
this.getDerivativeManifest = function(urn, derivativeUrn, opts, oauth2client, credentials)
但您的代码似乎以相反的顺序使用 oauth2client
和 credentials
。改完之后这里就正常了
var derivatives = new ForgeSDK.DerivativesApi();
var autoRefresh = true;
var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id,
client_secret, [
"viewables:read"
], autoRefresh);
oAuth2TwoLegged.authenticate().then(function(credentials) {
derivatives.getDerivativeManifest(urn, derivative_urn, {}, oAuth2TwoLegged, credentials).then(function(content) {
console.log(content);
}).catch(function(err) {
if (err) {
console.log(err);
}
})
});
建议仅使用 viewables:read
作用域,因为您不需要所有这些额外权限(至少对于此代码而言)。
将 forge-apis NPM 包更新到最新版本 (0.4.1) 后,我重新尝试 bubble.js 函数 extract.autodesk.io,现在工作正常:我可以毫不费力地下载 SVF 文件。
感谢@Augusto 的帮助。仍然想知道为什么 "basic" cUrl 方法没有按预期工作...
在使用 extract.autodesk.io 模块 (
这是我试图实现的目标的最小示例:
var ForgeSDK = require("forge-apis");
/* The next four lines are filled with my credentials and URN values
* (this shouldn't be the problem, since getting the manifest for the URN
* is performed successfully) */
var client_id = "...";
var client_secret = "...";
var urn = "...";
var derivative_urn = "...";
var derivatives = new ForgeSDK.DerivativesApi();
var autoRefresh = true;
var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id,
client_secret, [
"data:read", "data:write", "bucket:read", "bucket:write"
], autoRefresh);
oAuth2TwoLegged.authenticate().then(function(credentials) {
derivatives.getDerivativeManifest(urn, derivative_urn, {}, credentials, oAuth2TwoLegged).then(function(content) {
console.log(content);
}).catch(function(err) {
if (err) {
console.log(err);
}
})
});
我收到以下错误:{ statusCode: 401, statusMessage: 'Unauthorized' }。是范围问题吗?
非常感谢!
P.S.: 我知道 extract.autodesk.io 提供了一种很好的方法,但我觉得使用 气泡 对象在另一个上下文中转置并不是那么简单。 forge-apis 模块应该可以无缝地完成这项工作(或者我遗漏了什么)。
Update:按照 Augusto 的建议,我使用了最基本的命令(即 cUrl)从 IFC 文件下载信息。下面的前两个命令成功运行(下载清单和 PNG 屏幕截图文件)。 SVF 的下载似乎也能正常工作,除了 ZIP 文件只包含两个 JSON 文件(manifest.json 和 metadata.json),以及三个空目录(geometry,material, 场景).
代码如下:
# Get manifest for the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest" > manifest.json
# Get a PNG related to the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_PNG" > image.png
# Get the SVF converted from the IFC file
curl -X "GET" -H "Authorization: Bearer $TOKEN" -v "https://developer.api.autodesk.com/modelderivative/v2/designdata/$URN_IFC/manifest/$URN_SVF" > output.zip
有什么想法吗?
看the implementation for npm forge-apis@0.4.1,签名是:
this.getDerivativeManifest = function(urn, derivativeUrn, opts, oauth2client, credentials)
但您的代码似乎以相反的顺序使用 oauth2client
和 credentials
。改完之后这里就正常了
var derivatives = new ForgeSDK.DerivativesApi();
var autoRefresh = true;
var oAuth2TwoLegged = new ForgeSDK.AuthClientTwoLegged(client_id,
client_secret, [
"viewables:read"
], autoRefresh);
oAuth2TwoLegged.authenticate().then(function(credentials) {
derivatives.getDerivativeManifest(urn, derivative_urn, {}, oAuth2TwoLegged, credentials).then(function(content) {
console.log(content);
}).catch(function(err) {
if (err) {
console.log(err);
}
})
});
建议仅使用 viewables:read
作用域,因为您不需要所有这些额外权限(至少对于此代码而言)。
将 forge-apis NPM 包更新到最新版本 (0.4.1) 后,我重新尝试 bubble.js 函数 extract.autodesk.io,现在工作正常:我可以毫不费力地下载 SVF 文件。
感谢@Augusto 的帮助。仍然想知道为什么 "basic" cUrl 方法没有按预期工作...