Я хочу проверить функцию onCall через firebase functions:shell
как аутентифицированный usr
Я пробовал многие комбинации звонков с https://firebase.google.com/docs/functions/local-emulator#invoke_https_functions
А также загрузка и настройка GOOGLE_APPLICATION_CREDENTIALS
env var
Моя функция выглядит так:
exports.sendMessage = functions.https.onCall((data, context) => {
if (!context.auth) {
throw new functions.https.HttpsError('failed-precondition', 'The function must be called while authenticated.');
}
// Other logic
}
Он отлично работает после развертывания и запуска из моего приложения ios, но я не могу запустить его в оболочке.
Следующая команда действительно ударит по функции:
sendMessage.post({headers: {'content-type' : 'application/json'},body: JSON.stringify({data: {'messageId':'test'} }) })
и возвращает
RESPONSE RECEIVED FROM FUNCTION: 400, {“error”:{“status”:“FAILED_PRECONDITION”,“message”:“The function must be called while authenticated.“}}
Что правильно, но я хочу аутентифицированного пользователя сейчас. Когда я пытаюсь добавить аутентификацию, как в документации, рекомендую:
sendMessage('data', {auth:{uid:'USERUID'}}).post({headers: {'content-type' : 'application/json'},body: JSON.stringify({data: {'messageId':'test'} }) })
Я получаю ERROR SENDING REQUEST: Error: no auth mechanism defined
Если я попытаюсь следовать заголовкам авторизации на этой странице https://firebase.google.com/docs/functions/callable-reference примерно так:
sendMessage.post({headers: {'Authorization': 'Bearer USERUID', 'content-type' : 'application/json'},body: JSON.stringify({data: {'messageId':'test'} }) })
Я вернусь:
ОТВЕТ, ПОЛУЧЕННЫЙ ОТ ФУНКЦИИ: 401, {"error": {"status": "UNAUTHENTICATED", "message": "Unauthenticated"}}
Как отправить запрос как аутентифицированный пользователь?
Ссылки по теме
Как локально протестировать облачные функции firebase `functions.https.onCall`?