Contamos con la mejor información que encontramos on line. Nosotros esperamos que te sirva de ayuda y si quieres aportar algo que nos pueda ayudar a mejorar hazlo libremente.
Hay una muestra de código oficial para lo que está tratando de hacer. Lo que ilustra es cómo configurar su función HTTPS para requerir un encabezado de Autorización con el token que el cliente recibió durante la autenticación. La función usa la biblioteca firebase-admin para verificar el token.
Además, puede usar “funciones a las que se puede llamar” para facilitar mucho este modelo, si su aplicación puede usar bibliotecas cliente de Firebase.
Como lo menciona @Doug, puedes usar firebase-admin
para verificar un token. He configurado un ejemplo rápido:
exports.auth = functions.https.onRequest((req, res) =>
cors(req, res, () =>
const tokenId = req.get('Authorization').split('Bearer ')[1];
return admin.auth().verifyIdToken(tokenId)
.then((decoded) => res.status(200).send(decoded))
.catch((err) => res.status(401).send(err));
);
);
En el ejemplo anterior, también habilité CORS, pero eso es opcional. Primero, obtienes el Authorization
cabecera y averiguar el token
.
Entonces, puedes usar firebase-admin
para verificar ese token. Obtendrá la información decodificada para ese usuario en la respuesta. De lo contrario, si el token no es válido, arrojará un error.
Como también mencionó @Doug, puede usar Callable Functions para excluir algún código repetitivo de su cliente y su servidor.
Ejemplo de función invocable:
export const getData = functions.https.onCall((data, context) =>
// verify Firebase Auth ID token
if (!context.auth)
return message: 'Authentication Required!', code: 401 ;
// do your things..
const uid = context.auth.uid;
const query = data.query;
return message: 'Some Data', code: 400 ;
);
Se puede invocar directamente desde su cliente así:
firebase.functions().httpsCallable('getData')(query).then(result => console.log(result));
No se te olvide compartir esta sección si lograste el éxito.