ADN Open CIS
Сообщество программистов Autodesk в СНГ

30/04/2018

Процесс работы с 3-legged токенами в Node.js cli

В ходе моей недавней работы я сделал сценарий Node.js, чтобы протестировать рабочий процесс с 3-legged токеном в Node.js cli. Node.js SDK Autodesk Forge обеспечивает демонстрацию на 2-legged токене, но еще не предоставила демо для 3-legged. Хотя с подсказками из .NET SDK Forge, я создал аналогичный рабочий процесс в Node.js. Это довольно просто: просто запустите HTTP-прослушиватель конечной точки обратного вызова, откройте веб-страницу для авторизации во всплывающем окне с помощью opn после того, как пользователю были предоставлены права, перенаправьте на конечную точку обратного вызова, чтобы получить токен. 

Полный тест доступен по адресу: https://github.com/xiaodongliang/Forge-3legged-Node-Cli

Ниже приведены некоторые основные фрагменты кода. Тест также включает рабочий процесс для обновления токена доступа в определенное время.

1. процесс токена:

Код - JavaScript: [Выделить]
  1. // для всплывающего диалога oAuth log
  2. var opn = require('opn');
  3.  
  4. //......
  5.  
  6. // вывести диалог входа в систему OAuth
  7. function startoAuth()
  8. {  
  9.  
  10.   var url =
  11.     "https://developer.api.autodesk.com" +
  12.     '/authentication/v1/authorize?response_type=code' +
  13.     '&client_id=' + config.credentials.client_id +
  14.     '&redirect_uri=' + config.callbackURL +
  15.     '&scope=' + config.scope.join(" ");
  16.  
  17.   // откройте диалог входа и авторизации во всплывающем окне
  18.     opn(url, function (err) {
  19.       if (err) throw err;
  20.       console.log('Пользователь закрыл браузер');
  21.   });
  22. }
  23.  
  24. // конечная точка обратного вызова
  25. router.get('/forgeoauth',function(req,res){
  26.  
  27.   // Код авторизации
  28.   var code = req.query.code;
  29.  
  30.   var forge3legged = new forgeSDK.AuthClientThreeLegged(
  31.     config.credentials.client_id,
  32.     config.credentials.client_secret,
  33.     config.callbackURL,
  34.     config.scope);
  35.  
  36.   forge3legged.getToken(code).then(function (tokenInfo) {
  37.     // записываем токен и обновляем токен в файл
  38.     writeTokenFile(tokenInfo);    
  39.     res.redirect('/')
  40.   }).catch(function (err) {
  41.     console.log(err);
  42.     res.redirect('/')
  43.   });
  44.  
  45. });
  46.  
  47.  
  48. module.exports = {
  49.   router:router,
  50.   startoAuth:startoAuth
  51. };

 

2. http-сервер:

Код - JavaScript: [Выделить]
  1. var express = require('express');
  2. var app = express();
  3. var server = require('http').Server(app); 
  4.  
  5. // получить маршрут маркера
  6. var tokenRoute = require('./token'); 
  7. app.use('/token', tokenRoute.router); 
  8.  
  9. // установить порт
  10. app.set('port', process.env.PORT || 1234);
  11.  
  12. server.listen(app.get('port'), function() {
  13.     console.log('Server listening on port '
  14.         + server.address().port);
  15. });
  16.  
  17. // запуск процесса oAuth
  18. tokenRoute.startoAuth();

 

Источник: https://forge.autodesk.com/blog/3legged-token-process-nodejs-cli

 

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 30.04.2018
Отредактировано 30.04.2018 в 18:09:03