Как правильно передать аутентификацию в облачные функции при вызове из расширения ChromeJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно передать аутентификацию в облачные функции при вызове из расширения Chrome

Сообщение Anonymous »

Это облачная функция, которую я использую для доступа к Firestore
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.getUserCredits = functions.https.onCall(async (data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError("unauthenticated", "User must be signed in.");
}
const uid = context.auth.uid;
const userRef = admin.firestore().doc(`users/${uid}`);
try {
const docSnap = await userRef.get();
if (!docSnap.exists) {
throw new functions.https.HttpsError("not-found", "User document does not exist.");
}
const userData = docSnap.data();
const credits = userData?.credits ?? 0; // Default to 0 if undefined
return { credits };
} catch (error) {
console.error("Error getting user credits:", error);
if (error.code && error.code.startsWith("permission-denied")) {
throw new functions.https.HttpsError("permission-denied", "Access to Firestore denied.");
}
throw new functions.https.HttpsError("internal", "An unexpected error occurred.");
}
});
< /code>
Я отправляю запрос из расширения Chrome, а пользователь входит Пользовательские кредиты из облачной функции: FirebaseError: пользователь должен быть вписан. "
export async function getUserCredits(): Promise {
const auth = Auth.getAuth(); // Initialize Firebase Auth
const user = auth.currentUser;

if (!user) {
console.log("No user is logged in.");
return undefined;
}

// Initialize Firebase Functions
const functions = getFunctions();

try {
// Call the Firebase Cloud Function
const getUserCreditsFunction = httpsCallable(functions, "getUserCredits");

// Call the function, passing the necessary data if needed
const result = await getUserCreditsFunction();

// Get the 'credits' from the result returned by the Cloud Function
const credits = (result.data as { credits: number })?.credits ?? undefined;

return credits;
} catch (error) {
console.log("Error getting user credits from Cloud Function:", error);
return undefined;
}
}
< /code>
Пользователь регистрируется в расширении, у меня есть пользовательские данные в «if», вот почему он вызывает функции. Я попробовал почти все, что мог. Я могу получить доступ к Firestore непосредственно из расширения, но не из облачных функций.

Подробнее здесь: https://stackoverflow.com/questions/794 ... rom-chrome
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»