Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Autodesk Forge Viewer中的令牌更新_Javascript_Autodesk Forge_Autodesk Viewer - Fatal编程技术网

Javascript Autodesk Forge Viewer中的令牌更新

Javascript Autodesk Forge Viewer中的令牌更新,javascript,autodesk-forge,autodesk-viewer,Javascript,Autodesk Forge,Autodesk Viewer,渲染查看器时,需要一个令牌来访问带有URN的模型数据 我目前正在做的是: 每次加载HTML页面时:调用身份验证端点以获取令牌 向查看器提供此令牌 为此,我将client\u id和client\u secret放在JS中,如下所示(代码基于): fetch('https://developer.api.autodesk.com/authentication/v1/authenticate', { 方法:“POST”, 标题:{ “内容类型”:“应用程序/x-www-form-urlencod

渲染查看器时,需要一个令牌来访问带有URN的模型数据

我目前正在做的是:

  • 每次加载HTML页面时:调用身份验证端点以获取令牌
  • 向查看器提供此令牌
为此,我将
client\u id
client\u secret
放在JS中,如下所示(代码基于):

fetch('https://developer.api.autodesk.com/authentication/v1/authenticate',
{
方法:“POST”,
标题:{
“内容类型”:“应用程序/x-www-form-urlencoded”
},
正文:新URLSearchParams({
“客户识别码”:“****”,
“客户机密”:“*****”,
“授权类型”:“客户端凭据”,
“范围”:“视图:已读”
})
})
.then(res=>res.json())
.然后(值=>{
变量查看器;
变量选项={
环境:“AutodeskProduction”,
accessToken:value.access\u令牌
};
var documentId='urn:****';
Autodesk.Viewing.Initializer(选项,函数初始化(){
Autodesk.Viewing.Document.load(documentId、onDocumentLoadSuccess、onDocumentLoadFailure);
});
});
这显然是一件可怕的事情,因为秘密是暴露在客户端的

在这方面,有人指出

开发人员可以(而且应该)提供一个函数,可以[从后端]获取新的访问令牌

var选项={
环境:“AutodeskProduction”,
getAccessToken:函数(onGetAccessToken){
//
//TODO:将下面的静态访问令牌字符串替换为从后端获取新令牌的调用
//这两个值都由Forge的身份验证(OAuth)API提供。
//
//Forge的身份验证(OAuth)API返回值示例:
// {
//“访问令牌”:“,
//“令牌类型”:“承载者”,
//“到期日”:86400
// }
//
var accessToken='';
var expireTimeSeconds=86400;
onGetAccessToken(accessToken,expireTimeSeconds);
}
}
我不明白我们在这里讨论的是哪个后端,因为我们只有静态HTML/JS。你能提供一个这样的令牌更新功能的例子吗?它应该在哪里

即使长时间没有人访问HTML页面,是否存在更新令牌的运行时


谢谢大家。

关于令牌过期,我认为getAccessToken函数会自动更新令牌,因此您只需要提供一个函数来获取新令牌,如注释中所述

对于后端,可能有一些方法只使用html/js并隐藏您的凭据,但这不是推荐的方法

我在Forge团队中制作和看到的所有Forge开发都是使用后端(NodeJS、C#、PHP……您可以选择自己喜欢的语言)

您可以按照本教程使用NodeJS进行操作:


您还可以检查,在那里可以找到许多不同的示例。

在构建Forge应用程序时,您通常必须实现一个基本后端,至少是为了生成访问令牌(而不是——正如您正确指出的那样——直接从客户机请求令牌并公开客户机ID和机密)

要使用.NET Core、Node.js、Java、PHP或Go创建简单的服务器,请转到教程并选择您选择的语言