У меня есть лямбда-функция, которая передает id_token, авторизованный Auth0, в функцию, которая проверяет JWT, а затем возвращает только что созданный токен из firebase.
Вот функция Lambda:
const express = require('express');
const serverless = require('serverless-http');
const cors = require('cors');
const jwt = require('express-jwt');
const jwks = require('jwks-rsa');
const firebaseAdmin = require('firebase-admin');
const app = express();
app.use(cors());
const jwtCheck = jwt({
secret: jwks.expressJwtSecret({
cache: true,
rateLimit: true,
jwksRequestsPerMinute: 5,
jwksUri: 'https://skillthrive.auth0.com/.well-known/jwks.json'
}),
audience: '3U-nSf4D_ofItgNsObXGdFY92aFqBYih',
issuer: 'https://skillthrive.auth0.com/',
algorithm: 'RS256'
});
const serviceAccount = require('../firebase/firebase-keys.json');
firebaseAdmin.initializeApp({
credential: firebaseAdmin.credential.cert(serviceAccount),
databaseURL: `https://${serviceAccount.project_id}.firebaseio.com`
});
// GET object containing Firebase custom token
app.get('/firebase', jwtCheck, async (req, res) => {
const {sub: uid} = req.user;
try {
const firebaseToken = await firebaseAdmin.auth().createCustomToken(uid);
res.json({firebaseToken});
} catch (err) {
res.status(500).send({
message: 'Something went wrong acquiring a Firebase token.',
error: err
});
}
});
module.exports.handler = serverless(app);
На стороне клиента у меня есть запрос в следующем методе:
doSignInWithCustomToken() {
if (typeof window !== 'undefined') {
fetch('/.netlify/functions/firebase', {
headers: {
'Authorization': `Bearer ${window.localStorage.getItem('id_token')}`,
},
}).then(response => console.log(response))
/*.then(response => response.json())
.then(data => this.auth.signInWithCustomToken(data.firebaseToken))*/
.catch(error => console.log(error));
}
}
На локальном хосте я получаю обратно 200 ответов и затем могу передать ответ на signInWithCustomToken () (функция, предоставляемая firebase).
Однако, как только я нажимаю на Netlify и тестирую, я получаю ошибку 502 и error decoding lambda response: json: cannot unmarshal number into Go value of type string
в моих журналах функций Netlify.
Кто-нибудь знает, что может быть не так?