У меня есть нативный проект React с использованием Firebase, и я сталкиваюсь с проблемой с функциями Google Cloud. Похоже, что запрос не достигает функции, и ничто не появляется в Google Cloud Explorer. РЕЗУЛЬТАТ.// firebaseConfig.js
import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";
import { getStorage } from "firebase/storage";
import { getFunctions } from "firebase/functions";
import { initializeAuth, getReactNativePersistence } from "firebase/auth";
import ReactNativeAsyncStorage from "@react-native-async-storage/async-storage";
const firebaseConfig = {
...
};
const app = initializeApp(firebaseConfig);
const auth = initializeAuth(app, {
persistence: getReactNativePersistence(ReactNativeAsyncStorage),
});
const db = getFirestore(app);
const storage = getStorage(app);
const functions = getFunctions(app, 'us-central1');
export { app, auth, db, storage, functions };
< /code>
Облачная функция: < /p>
const { setGlobalOptions } = require("firebase-functions");
const { onCall, HttpsError } = require("firebase-functions/v2/https");
const admin = require("firebase-admin");
admin.initializeApp();
setGlobalOptions({ maxInstances: 10 });
exports.setUserRole = onCall(async (request) => {
const { uid, role } = request.data;
if (!uid) {
throw new HttpsError("invalid-argument", "UID cannot be empty.");
}
if (!request.auth || request.auth.token.role !== "admin") {
throw new HttpsError("permission-denied", "Unauthorized action.");
}
if (!["admin", "user"].includes(role)) {
throw new HttpsError("invalid-argument", "Invalid role.");
}
try {
await admin.auth().setCustomUserClaims(uid, { role });
return { success: true };
} catch (error) {
console.error("Role update error:", error);
throw error;
}
});
< /code>
rn httpcall: < /p>
import { functions } from '../config/firebaseConfig';
import { httpsCallable } from 'firebase/functions';
const handleChangeRole = async (userId: string, currentRole: string) => {
try {
const setUserRole = httpsCallable(functions, 'setUserRole');
await setUserRole({ uid: "MdCccwMtwfOJmgbm5mVvbOwFOJD3", role: "admin" });
Alert.alert('Success', `Role updated to "admin".`);
} catch (error) {
console.error('Role change error:', error);
Alert.alert('Error', 'Role could not be changed.');
}
};
< /code>
Что может привести к тому, что функции Firebase Cloud возвращают «внутреннюю» ошибку, не показывая каких -либо журналов в новом проекте Firebase, и как я могу отлаживать или исправить это? Из моего приложения React Native я называю его с HttpsCallable («setUserrole») и прохожу допустимую UID и роль. Я ожидал, что он обновит пользователя и вернет {успех: true}, но вместо этого я всегда получаю внутреннюю ошибку. Странная вещь, в том, что в облачном журнале нет ничего, поэтому кажется, что запрос даже не достигает функции.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ving-proje
Функции облака Firebase возвращают «внутреннюю» ошибку без журналов после перемещения проекта в React Native ⇐ Javascript
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение