Имею плохую ситуацию. Использую express и axios, хочу передать значение промиса но никак не могут. Есть файл сервера, аутентификации и корзинки. Я получая переменную токена доступа в файле сервера и должен передать её функции корзинки. Когда всё пишется в одном файле проблем не возникает, когда я пишу с отдельным файлом аутентификации тоже проблем не возникает, но когда я пишу ещё отдельный файл корзинки, тогда ничего не выходит.
Тело файл сервера
const path = require('path');
const express = require('express'); // For web server
const Axios = require('axios'); // A Promised base http client
const bodyParser = require('body-parser'); // Receive JSON format
const querystring = require('querystring');
let app = express();
app.use(bodyParser.json())
app.use(express.static(path.join(__dirname, 'public')));
const config = require('./config');
const PORT = config.credentials.PORT; // import from bim start.js
var FORGE_CLIENT_ID = 'ZqbXzFL8NMXtovqJrLG0O9f5Ar3nQRoE';
var FORGE_CLIENT_SECRET = 'PM4vPHZGQArq99qn';
const scopes = 'data:read data:write data:create bucket:create bucket:read';
app.use((err, req, res, next) => {
console.error(err);
res.status(err.statusCode).json(err);
})
Файл аутентификации
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
const config = require('../config');
var FORGE_CLIENT_ID = 'ZqbXzFL8NMXtovqJrLG0O9f5Ar3nQRoE';
var FORGE_CLIENT_SECRET = 'PM4vPHZGQArq99qn';
const scopes = 'data:read data:write data:create bucket:create bucket:read';
let router = express.Router();
router.use(bodyParser.json());
module.exports = oauth => {
return Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/authentication/v1/authenticate',
headers: {
'content-type': 'application/x-www-form-urlencoded',
},
data: querystring.stringify({
client_id: FORGE_CLIENT_ID,
client_secret: FORGE_CLIENT_SECRET,
grant_type: 'client_credentials',
scope: scopes
})
})
}
Продолжение аутентификации в файле сервера
let access_token = '';
var oauth = require('./routes/oauth')
app.get('/api/forge/oauth', function(req, res) {
oauth()
.then(function (response) {
// Success
// let's save token into the varible access_token
access_token = response.data.access_token;
console.log(response);
console.log(access_token);
// Then, the app is routed to, which creates a shared bucket for our app.
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
// Failed
console.error(error);
res.send('Failed to authenticate');
});
});
Файл корзинки
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
const config = require('../config');
const bucketKey = config.credentials.client_id.toLowerCase() + '_my_first_full_viewer_bucket';
const policyKey = 'transient'; // Expires in 24hr
module.exports = bucketCreate => {
return Axios({
method: 'POST',
url: 'https://developer.api.autodesk.com/oss/v2/buckets',
headers: {
'content-type': 'application/json',
Authorization: 'Bearer ' + access_token
},
data: JSON.stringify({
'bucketKey': bucketKey,
'policyKey': policyKey
})
})
}
Продолжение части корзинки в файле сервера
var bucketCreate = require('./routes/bucketCreate')
app.get('/api/forge/datamanagement/bucket/create', function (req, res) {
bucketCreate()
.then(function (response) {
// Success
console.log(response);
res.redirect('/api/forge/datamanagement/bucket/detail');
})
.catch(function (error) {
if (error.response && error.response.status == 409) {
console.log('Bucket already exists, skip creation.');
res.redirect('/api/forge/datamanagement/bucket/detail');
}
// Failed
console.log(error);
res.send('Failed to create a new bucket');
});
});
Мне не удаётся передать значение access_token из файла сервера в файл корзинки, где буду происходить дальнейшие операция с ними. Мне так же не удавалась передать эту переменную в файл аутентификации, поэтому я пошёл обходным путём и получил часть файла аутентификации в фале сервера, а манипуляции с access_token выполнил в файле сервера. Код ошибки 401(если не ошибаюсь, или 403). В любом случаи буду признателен за помощь.