Я следовал этим указаниям Firebase , и в течение последних нескольких недель я использовал databaseAuthVariableOverride
, чтобы позволить пользователям использовать Algolia для запуска результатов поиска в моем приложении и доступа к базе данных.Я изменил свой ключ API учетной записи службы Firebase ранее сегодня, и теперь databaseAuthVariableOverride
больше не работает, и я не могу получить доступ к базе данных.
До того, как я изменил свой ключ API, все работало нормально, когда я устанавливал свои правила и приложение.js файл в:
правила Firebase:
{
"rules": {
".read": "auth.uid === 'my-service-worker'", // matches the databaseAuthVariableOverride
".write": "auth.uid != null"
}
}
и мой файл App.js в:
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert({
projectId: .....,
privateKey: "-----BEGIN PRIVATE KEY-----oldPrivateKey----END PRIVATE KEY-----\n",
clientEmail: .....
}),
databaseURL: .....,
databaseAuthVariableOverride: {
uid: "my-service-worker" // matches the rules
}
});
Когда я изменил свою учетную запись службы, я пошел ProjectOverview > ProjectSettings > ServiceAccounts > Создать новый закрытый ключ .После нажатия Generate New Private Key * новый ключ был загружен в мой процессор.
Я проверил разрешения внутри IAM
, а адрес электронной почты клиента учетной записи службы установлен на Editor
.
Затем я взял новый закрытый ключ, которыйбыл сгенерирован как -----BEGIN PRIVATE KEY-----newPrivateKey----END PRIVATE KEY-----\n
, скопирован и вставлен в мой файл app.js, где был установлен мой старый закрытый ключ:
admin.initializeApp({
credential: admin.credential.cert({
// my new private key
privateKey: "-----BEGIN PRIVATE KEY-----newPrivateKey----END PRIVATE KEY-----\n"
Теперь единственный способ, которым он работает, - это установить мои правила Firebase на:
{
"rules": {
".read": true,
".write": "auth.uid != null"
}
}
Ключ API должен работать, иначе я не смог бы ничего прочитать с установленными правилами true
Когда я попытаюсь сделать вещи оригинальным способомКогда я установил правила, чтобы соответствовать my-service-worker
, файл app.js
больше не предоставлял доступ к базе данных.
В комментариях @Doug Stevenson предложил мне изменить все поля, которые пришли с новым СервисомУчетная запись, но проблема в том, что я использовал только 3 поля из старой служебной учетной записи из этих 3-х, единственное, что было изменено, это закрытый ключ.Другие 2 поля имеют одинаковые значения.Есть несколько других, с которых я никогда не начинал:
Это значения, которые используются внутри файла app.js
:
В чем может быть проблема?
ОБНОВЛЕНИЕ @ Дуг Стивенсон говорил, что каждый разсоздается новая учетная запись службы, с ней также должна создаваться новая электронная почта клиента.Я создал 5 учетных записей служб, а первые 4 сохранили ту же электронную почту клиента.Я не уверен, почему это произошло, но я зашел в консоль Google Cloud, сгенерировал свою собственную, удалил старые и ничего не получилось.Затем я вернулся к консоли Firebase с синей кнопкой, нажал ее, и затем я получил новое электронное письмо от клиента.Мне потребовалось 5 загрузок учетной записи службы, чтобы изменить его ???Как бы то ни было, я обновил значения с помощью новой электронной почты клиента и связанного с ней закрытого ключа, и мои проблемы все еще сохраняются.Я также проверил разрешения, и для них установлено значение «Редактор».
Я отправил Firebase по электронной почте справку и жду ответа.