Мне удалось сделать это с помощью Firebase Admin SDK .
Как описано в этом руководстве, вам необходимо:
Создание личного ключа для учетной записи службы
- В консоли Firebase откройте Настройки> Учетные записи службы.
- Нажмите Создать новый закрытый ключ , затем подтвердите, нажав Создать ключ .
- Надежно сохраните файл JSON, содержащий ключ.
Установите переменную среды
Добавьте в свой .bashrc или .zshrc:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
- В NodeJS инициализируйте SDK:
admin.initializeApp({
credential: admin.credential.applicationDefault(),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
В вашем клиенте отправьтетокен JWT в заголовке:
const token = await firebase.auth().currentUser.getIdToken()
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: token
},
body: ...
});
На вашем сервере расшифруйте токен и получите UID:
return admin
.auth()
.verifyIdToken(token)
.then(function(decodedToken) {
var uid = decodedToken.uid;
console.log("uid ->", uid);
return uid;
})
.catch(function(error) {
console.log("error ->", error);
// Handle error
});
Вот и все.Очевидно, что работа с Firebase через ваш собственный домен NodeJS называется «использованием вашего собственного бэкенда».Это означает, что по умолчанию для них используется NodeJS или другой серверный посредник.