Получение переменной из сценария сервера в сценарий клиента - PullRequest
0 голосов
/ 19 июня 2019

Вот текущая проблема, с которой я борюсь.Я работаю над проектом веб-приложения, в котором у меня есть 2 сценария:

  • Сценарий с именем start.js, в котором я инициализирую сервер и инициализирую переменную token.Этот скрипт запускается при запуске веб-приложения.
  • Скрипт с именем viewer.js, который инициализирует зрителя.Для этого средства просмотра требуется предыдущий token.

Я не могу сгенерировать токен на стороне клиента, поскольку для него требуется NodeJS, и, насколько я понял, NodeJS не работает на клиентеside.

Я пытался использовать глобальные переменные, глобальные методы или HTTP-запросы, но пока ни один из этих методов не работает. Любой совет, как это сделать?

Вот что я попробовал:

// start.js
const ForgeSDK = require('forge-apis');
const express = require('express');
const path = require('path');
var app = express();
app.use('/static', express.static(__dirname + '/static'));

/**
 * Token generation
 */

oAuth2TwoLegged.authenticate().then(function(credentials){
    setToken(credentials.access_token)
}, function(err){
    console.error(err);
});
function setToken(newToken) {
    console.log("Definition du nouveau token")
    token = newToken;
    console.log(token)
};

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html')); 
});
app.listen(3000, function () {
    console.log('Token provider listening on port 3000')
});
// viewer.js
var token = '';
/**
 * Viewer initialization
 */

1 Ответ

0 голосов
/ 20 июня 2019

Вы можете передать обратный вызов вашим параметрам конфигурации, чтобы получить токен (обычно через ajax) на запросы:

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);
    }
}

 Autodesk.Viewing.Initializer(options, function onInitialized(){
  ...

Подробнее см. здесь .

И посмотрите здесь и здесь , чтобы создать конечную точку для генерации токенов доступа в вашем бэкэнде Node.

...