Tengo problemas con algunas funciones que funcionaban anteriormente. He creado una función para permitir que el usuario cree otro usuario y funcionaba bien. Las funciones que no usan Admin funcionan bien como antes.
Sin embargo, debido a algunas actualizaciones de Firebase, la función se rompió y recibo un error 'interno'. Tuve que cambiar import firebase from "firebase/app"; para import firebase from "firebase/compat/app"; así como import "firebase/compat/functions"; pero eso no funcionó, además de actualizar firebase a "^9.8.1" , pero eso tampoco funcionó.
Aquí está mi función web:
async registerUser(userInfo) { const functions = getFunctions(); const createUser = httpsCallable(functions, "createUser"); // Used to have this: // let createUser = firebase.functions().httpsCallable("createUser"); //Call to function where it breaks. return await createUser({ //User data here }) .then( //stuff happens here ).catch((error) => { //Error happens here }) }Esta es la función que ya se implementó en Firebase:
const functions = require("firebase-functions"); const admin = require("firebase-admin"); admin.initializeApp(); exports.createUser = functions.https.onCall(async (userData) => { return await admin .auth() .createUser(userData) .then(() => { return { isError: false }; }) .catch((error) => { return { isError: true, errorMessage: error }; }); });Aquí está el registro de respuestas:
Request Method: OPTIONS Status Code: 403 Referrer Policy: strict-origin-when-cross-origin alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43" content-length: 305 content-type: text/html; charset=UTF-8 date: Tue, 24 May 2022 16:04:14 GMT server: Google FrontendPuede consultar la página de manejo de errores del SDK de administrador y verificar la estructura del error , la parte refer to policy: strict-origin-when-cross-origin nos brinda un buen punto de partida.
Pero primero, podemos ver la causa raíz de este problema, ya que en la misma página tenemos una tabla para los códigos de error de la plataforma donde:
INTERNO | Error de servidor interno. Por lo general, un error del servidor.
En los errores de API de autenticación de administrador de Firebase tenemos una tabla similar donde:
autenticación/error interno | El servidor de autenticación encontró un error inesperado al intentar procesar la solicitud. El mensaje de error debe contener la respuesta del servidor de autenticación con información adicional. Si el error persiste, informe el problema a nuestro canal de soporte de informe de errores.
Ahora hablando del mensaje cors, esta pregunta sugiere:
Considere importar de esta manera, como se muestra en los ejemplos:
const cors = require('cors')({origin: true});Y la forma general de tu función será así:
exports.fn = functions.https.onRequest((req, res) => { cors(req, res, () => { // your function body here - use the provided req and res from cors }) });
Es posible que deba realizar algunos cambios en la estructura ya que la pregunta tiene algo de tiempo, por lo que también dejaré la referencia a las funciones de llamada a través de solicitudes HTTP y verificaré si funciona para usted.
Haré un seguimiento si proporciona actualizaciones y consideraré enviar un informe de error como se menciona anteriormente en la documentación si es necesario.