В основном моя проблема в том, что у меня есть вызываемые функции в Firebase, где я хочу использовать «контекст», чтобы определить, аутентифицирован пользователь или нет. Во внешнем интерфейсе я вхожу в систему с использованием аутентификации Firebase (которая является функцией http в firebase), и в результате я получаю свой токен пользователя (который должен использоваться как токен-носитель в заголовке авторизации). Проблема в том, что я не уверен, как установить заголовок при входе в систему, чтобы мой "context.auth" содержал информацию о зарегистрированном пользователе, а не был пустым. Я использую firebase.functions().httpsCallable('myFunction');
, поскольку в документе предлагается выполнить вызов из внешнего интерфейса, где проблема заключается в том, что даже если я вошел в систему перед выполнением этого вызова, мой контекст равен нулю.
Чтобы дать больше контекста, подумайте о следующем сценарий,
//Backend (deployed to cloud functions)
exports.signout = functions.https.onCall((data, context) => {
if(context.auth){
//do signout stuff and return true
}
else{
//not logged in so you can't sign out return false
}
});
//Client
let signout = firebase.functions().httpsCallable('signout');
signout()
.then(res => console.log("signed out"))
.catch(err => console.log(err))
Итак, проще говоря, при создании httpsCallable('signout')
в клиенте я должен иметь токен пользователя в заголовке «Авторизация» в соответствии с документами, чтобы я мог получить доступ к context.auth
из моя вызываемая функция. Я не понимаю, как там установить этот заголовок? Наиболее логично установить его при входе в систему, но это не что-то вроде установки заголовка по умолчанию для ax ios, поскольку вызов не совсем HTTP-запрос, а мы используем эту специальную функцию httpsCallable
. Итак, как / когда должен быть установлен этот заголовок аутентификации?