Настройка: < /p>
Структура: next.js 14 (app router) < /p>
Хостинг: хостинг приложения Firebase (node.js 20 Runtime) < /p>
Back Back Logic: Сервер. SDK.
Инициализация SDK Admin SDK (SRC/Lib/Firebase-admin.ts): я инициализации Admin SDK с использованием стандартного, рекомендованного подхода для управляемых облачных сред, без явных учетных данных.
Код: Выделить всё
// src/lib/firebase-admin.ts
import { initializeApp, getApp, getApps } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
// Per official documentation for cloud environments
const app = getApps().length ? getApp() : initializeApp();
const adminAuth = getAuth(app);
export { adminAuth };
// src/ai/flows/manage-student.ts
'use server';
import { adminAuth } from '@/lib/firebase-admin';
export async function resetStudentPassword(input: ResetPasswordInput): Promise {
try {
// This is the call that fails
await adminAuth.updateUser(input.studentUid, {
password: input.newPassword,
});
return { success: true };
} catch (e: any) {
console.error("Error in resetStudentPassword:", e);
// The error is caught here
return { success: false, error: e.message };
}
}
< /code>
Проблема: когда вызывается функция ResetStudentPassword, она последовательно сбой со следующей ошибкой: < /p>
Faile_precondition: В этом запросе отсутствует действительный ключ API, токен OAuth 2.0 или cookie. См. Https://cloud.google.com/docs/authenticationобразное/> Что я проверил, и почему я запутался:
Другие звонки SDK администратора работают нормально. В том же приложении у меня есть другие бэкэнд -функции, которые успешно используют Admin SDK для взаимодействия с Firestore (чтение и написание документов). Проблема аутентификации, по-видимому, изолирован только для функций аутентификации Firebase. Я предоставил оба следующих роля быть безопасными:
Admin Admine Api Firebase (что должно быть достаточным)
Администрация аутентификации Firebase Admin
: «API« Identity Toolkit Toolkit »(который управляет автором FireBase) включен в свой Google Cloud Project. Секрет в хостинге приложения и явно инициализация администратора SDK с помощью initializeapp ({retreation: admin.credential.cert (...)}). Это привело к той же самой той же «отсутствующей ошибке» API -ключа », которая, по -видимому, указывает на то, что среда переоценивает или игнорирует ручную конфигурацию. Учитывая, что операции Firestore работают, он доказывает, что Admin SDK правильно подлинно подходит для некоторых услуг. Зачем это не удастся специально для вызова Auth (). UpdateUser () с этой конкретной ошибкой? Такое ощущение, что есть особое требование для службы Auth, которую мне не хватает в среде хостинга приложений. < /P>
Я ожидал, что кнопка будет работать. Я проверил свою платформу Google Cloud и свой бэкэнд, и все разрешения и роли соответствуют должным образом для учетных записей IAM и сервисов.
Подробнее здесь: https://stackoverflow.com/questions/797 ... se-console
Мобильная версия