< /li>
[*] Аутентификация: анонимная аутентификация Firebase.
Код: Выделить всё
Auth.auth().currentUser
do {
let functions = Functions.functions(region: "us-central1")
// The "generateRecipe" function name is correct
let result = try await functions.httpsCallable("generateRecipe").call(\["prompt": "test"\])
print("Success: (result.data ?? "No data")")
} catch {
// This catch block receives the 'UNAUTHENTICATED' (Code 16) error
print("Function call failed: (error)")
}
< /code>
server-side node.js Проверка: < /p>
// index.js
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.generateRecipe = functions.https.onCall(async (data, context) = \ > {
// This is the very first check in my function.
// It fails because `context.auth` is undefined.
if (!context.auth) {
console.log("Function rejected. Context.auth is:", context.auth);
throw new functions.https.HttpsError(
'unauthenticated',
'This operation requires authentication.'
);
}
// Logic beyond this point is never reached.
return {
success: true
};
});
< /code>
Я уверен, что это не простая ошибка конфигурации, так как я тщательно проверил и исправил следующее: < /p>
- Проектная инфраструктура: создано несколько проектов Fresh Firebase; обеспечить Firestore находится в собственном режиме и использует базу данных (по умолчанию); Исправлена все начальные блокировщики развертывания (проблемы с двигателем приложений, ошибки GCF-Admin-Robot). < /p>
< /li>
iam & apis: предоставлена учетная запись обслуживания функции как редактора, так и Admin Run Admin Rely; Вручную подтвердили, что все необходимые API (идентификация инструментов, облачный запуск и т. Д.). Исправлены все ошибки в лининге/синтаксисе; Разрешенные контейнеры HealthCheck Неудача ошибок путем правильной установки переменных среды. Использование правильного и недавно загруженного Googleservice-info.plist; completely purged the local environment multiple times (Deleted DerivedData, Simulator reset, rebooted Mac).
Given that all user-configurable aspects appear to be correct, what could possibly cause the Firebase infrastructure to fail to pass a valid auth context to a Функция CALLABLE? Я рассмотрел это, и хотя симптом (неавентицированная ошибка) похож, моя проблема в основном отличается. Связанный вопрос был решен путем решения вопросов на стороне клиента (например, использование неправильных проблем SDK или развертывания). < /P>
Я уже решил все эти проблемы и теперь могу доказать, что проблема заключается на стороне платформы. Результаты являются окончательными и противоречивыми:
клиент аутентифицируется. Журнал, размещенный непосредственно перед. Отпечатки журнала:
Вызов по -прежнему терпит неудачу. Блок подъема для того же вызова немедленно получает ошибку несаутентированной (кодовой 16) от функции.
Logs Run Logs подтверждают отклонение. Серверные журналы для базовой службы Cloud Run показывают ошибку 401 «Запрос не был уполномочен привести к ошибке этой службы». Это доказывает, что запрос отклоняется инфраструктурой до того, как код моей функции (и мой if (! Context.auth) проверяется).>
Подробнее здесь: https://stackoverflow.com/questions/796 ... setup-unau