Answer the question
In order to leave comments, you need to log in
How to go to the right address?
The problem is related to splitting the server.js file into modules. I am working on the autodesk.forge platform viewer and according to the documentation I created this viewer. To create a server, express and axios are used (well, other technologies, but the problem is related to the mentioned technologies). I also created a public folder, in it an html file with an authentication hyperlink.
Below is the working code.
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
const querystring = require('querystring');
let app = express();
app.use(bodyParser.json());
const config = require('./config');
const PORT = config.credentials.PORT;
app.set('port', 3000);
let server = app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
let access_token = '';
if (process.env.FORGE_CLIENT_ID == null || process.env.FORGE_CLIENT_SECRET == null) {
console.error('Missing FORGE_CLIENT_ID or FORGE_CLIENT_SECRET env. variables.');
return;
}
app.get('/api/forge/oauth', function (req, res) {
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: config.credentials.client_id,
client_secret: config.credentials.client_secret,
grant_type: 'client_credentials',
scope: config.scopes.internal
})
})
.then(function (response) {
access_token = response.data.access_token;
console.log(response);
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
console.log(error);
res.send('Failed to authenticate');
});
});
<body>
<main id="main">
<a href="/api/forge/oauth">Authorize me!</a>
</main>
</body>
const path = require('path');
const express = require('express');
const Axios = require('axios');
const bodyParser = require('body-parser');
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;
app.use('/api/forgee', require('./routes/oauth'));
app.use((err, req, res, next) => {
console.error(err);
res.status(err.statusCode).json(err);
});
let server = app.listen(PORT, () => { console.log(`Server listening on port ${PORT}`); });
const path = require('path');
const express = require('express');
const Axios = require('axios');
const querystring = require('querystring');
const config = require('../config');
let router = express.Router();
let access_token = '';
if (process.env.FORGE_CLIENT_ID == null || process.env.FORGE_CLIENT_SECRET == null) {
console.error('Missing FORGE_CLIENT_ID or FORGE_CLIENT_SECRET env. variables.');
return;
}
router.get('/api/forge/oauth', function (req, res) {
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: config.credentials.client_id,
client_secret: config.credentials.client_secret,
grant_type: 'client_credentials',
scope: config.scopes.internal
})
})
.then(function (response) {
access_token = response.data.access_token;
console.log(response);
res.redirect('/api/forge/datamanagement/bucket/create');
})
.catch(function (error) {
console.log(error);
res.send('Failed to authenticate');
});
});
module.exports = router;
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question