Процесс работы с 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. процесс токена:
- // для всплывающего диалога oAuth log
- var opn = require('opn');
- //......
- // вывести диалог входа в систему OAuth
- function startoAuth()
- {
- var url =
- "https://developer.api.autodesk.com" +
- '/authentication/v1/authorize?response_type=code' +
- '&client_id=' + config.credentials.client_id +
- '&redirect_uri=' + config.callbackURL +
- '&scope=' + config.scope.join(" ");
- // откройте диалог входа и авторизации во всплывающем окне
- opn(url, function (err) {
- if (err) throw err;
- console.log('Пользователь закрыл браузер');
- });
- }
- // конечная точка обратного вызова
- router.get('/forgeoauth',function(req,res){
- // Код авторизации
- var code = req.query.code;
- var forge3legged = new forgeSDK.AuthClientThreeLegged(
- config.credentials.client_id,
- config.credentials.client_secret,
- config.callbackURL,
- config.scope);
- forge3legged.getToken(code).then(function (tokenInfo) {
- // записываем токен и обновляем токен в файл
- writeTokenFile(tokenInfo);
- res.redirect('/')
- }).catch(function (err) {
- console.log(err);
- res.redirect('/')
- });
- });
- module.exports = {
- router:router,
- startoAuth:startoAuth
- };
2. http-сервер:
- var express = require('express');
- var app = express();
- var server = require('http').Server(app);
- // получить маршрут маркера
- var tokenRoute = require('./token');
- app.use('/token', tokenRoute.router);
- // установить порт
- app.set('port', process.env.PORT || 1234);
- server.listen(app.get('port'), function() {
- console.log('Server listening on port '
- + server.address().port);
- });
- // запуск процесса oAuth
- 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