Axios не работает внутри API защищенного маршрута
У меня есть функции Node JS, созданные в веб-задаче с безсерверной структурой. Маршруты API защищены, и для его использования мне нужно передать маркер firebase, который я отправляю со стороны клиента. Эта часть работает нормально, токен проверяется, и я могу получить доступ к маршрутам. Моя проблема с определенными маршрутами, в которых я использую axios
или же coin-ticker
, Функция работает нормально, пока она не выполнит код axios, а затем я получаю сообщение об ошибке. Это просто происходит, когда маршруты защищены, потому что если я пытаюсь выполнить тот же код без защиты маршрутов, то код работает нормально.
'use strict';
const admin = require('firebase-admin');
const express = require('express');
var fromExpress = require('webtask-tools').fromExpress;
const app = express();
var bodyParser = require('body-parser');
const axios = require('axios');
const coinTicker = require('coin-ticker');
admin.initializeApp({
credential: admin.credential.cert({
projectId: "<PROJECT_ID>",
clientEmail: "foo@<PROJECT_ID>.iam.gserviceaccount.com",
privateKey: "-----BEGIN PRIVATE KEY-----\n<KEY>\n-----END PRIVATE KEY-----\n"
}),
databaseURL: "https://<DATABASE_NAME>.firebaseio.com"
});
const authenticate = (req, res, next) => {
if (!req.headers.authorization/* || !req.headers.authorization.startsWith('Bearer ')*/) {
res.status(403).send('Unauthorized!');
return;
}
const idToken = req.headers.authorization/*.split('Bearer ')[1]*/;
admin.auth().verifyIdToken(idToken).then(decodedIdToken => {
req.user = decodedIdToken;
next();
}).catch(error => {
res.status(403).send('Unauthorized');
});
};
app.use(authenticate);
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/messages', (req, res) => {
res.send(req.body.numero)
});
app.post('/messages', (req, res) => {
res.send(req.body.numero)
});
//THIS IS THE ONE FAILING
//I know this code it's not useful but it's just an example
app.post('/ltc', (req,res) => {
axios.get('https://www.surbtc.com/api/v2/markets/btc-clp/ticker')
.then(res => {
res.send(res)
})
.catch(error => {
res.sendStatus(500)
})
});
module.exports = fromExpress(app);
Спасибо за вашу помощь!
PS: я использую учетные данные Google.