[英]Token renewal in Autodesk Forge Viewer
呈现查看器时,需要令牌才能使用其 URN 访问 model 数据。
我目前正在做的是:
为此,我将client_id
和client_secret
像这样放在 JS 中(代码基于步骤 1:准备您的 HTML ):
fetch('https://developer.api.autodesk.com/authentication/v1/authenticate',
{
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
'client_id': '*****',
'client_secret': '*****',
'grant_type': 'client_credentials',
'scope': 'viewables:read'
})
})
.then(res => res.json())
.then(value => {
var viewer;
var options = {
env: 'AutodeskProduction',
accessToken: value.access_token
};
var documentId = 'urn:*****';
Autodesk.Viewing.Initializer(options, function onInitialized(){
Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
});
});
这显然是一件可怕的事情,因为秘密暴露在客户端。
在Step 2: Token expiration中,声明了
开发人员可以(并且应该)提供一个 function 可以获取新的访问令牌 [从后端]
var options = {
env: 'AutodeskProduction',
getAccessToken: function(onGetAccessToken) {
//
// TODO: Replace static access token string below with call to fetch new token from your backend
// Both values are provided by Forge's Authentication (OAuth) API.
//
// Example Forge's Authentication (OAuth) API return value:
// {
// "access_token": "<YOUR_APPLICATION_TOKEN>",
// "token_type": "Bearer",
// "expires_in": 86400
// }
//
var accessToken = '<YOUR_APPLICATION_TOKEN>';
var expireTimeSeconds = 86400;
onGetAccessToken(accessToken, expireTimeSeconds);
}
}
我不明白我们在这里谈论的是哪个后端,因为我们只有 static HTML/JS。 您能否提供一个此类令牌更新 function 的示例,它应该位于哪里?
即使长时间没有人访问 HTML 页面,是否有运行时更新令牌?
多谢你们。
关于令牌到期,我认为 getAccessToken function 会自动更新令牌,因此您只需要提供 function 即可按照评论中的说明获取新令牌。
对于后端,可能有一些方法只使用 html/js 并隐藏您的凭据,但这不是推荐的方法。
我从 Forge 团队制作和看到的所有 Forge 开发人员都是用后端制作的(NodeJS、C#、PHP……你可以选择自己喜欢的语言)
您可以按照本教程使用 NodeJS 展示这一点:
您还可以查看Autodesk-Forge Github ,您可以在其中找到许多不同的示例。
在构建 Forge 应用程序时,您通常必须实现基本后端,至少用于生成访问令牌(而不是 - 正如您正确指出的那样 - 直接从客户端请求令牌并公开客户端 ID 和机密)。
To create a simple server using .NET Core, Node.js, Java, PHP, or Go, go to the https://learnforge.autodesk.io/#/environment/setup/2legged tutorial and select the language of your choice.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.