在使用Autodesk Forge Viewer的过程中,我们需要在每次WebGL查看器初始化的时候提供访问令牌,以便向服务端请求资源。令牌有一个特定的过期时间,如果我们不在它失效前续期,那么查看器将不再能够访问特定的资源。因此,自动令牌续期是非常重要的。以下是一个示例代码,它展示了如何使用setInterval()函数和updateToken方法来实现令牌的自动续期:
//获取设置好的Token
function getToken(callback) {
jQuery.ajax({
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
success: function (authResponse) {
token = authResponse.token_type + ' ' + authResponse.access_token;
refreshToken = authResponse.refresh_token;
expiresIn = authResponse.expires_in;
callback();
},
error: function (err) {
console.log(err);
},
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(client_id + ":" + client_secret));
},
type: 'POST',
dataType: 'json',
data: {
'client_id': client_id,
'client_secret': client_secret,
'grant_type': 'client_credentials'
}
});
}
//隔一定时间续期
setInterval(function () {
getToken(function () {
viewer.autodesk.viewer.refreshToken(token, expiresIn, refreshToken);
});
}, 3000 * 1000); //5分钟续期一次
这段代码中,setInterval()函数调用了一个匿名函数。该函数每隔一定时间就会调用getToken(),获取新的令牌,并使用updateToken()将令牌更新到Autodesk.Viewing.Viewer的实例中。
这里设置的续期时间为3000 * 1000,也就是5分钟。也可以根据需要更改这个间隔时间。