Инициализировать учетную запись службы и клонировать функции вместе -Firebase
Как я могу инициализировать облачные функции и сервисную учетную запись вместе. В моем файле index.ts я уже инициализировал функции, используя
admin.initializeApp(functions.config().firebase);
но теперь я хочу создать собственный токен с помощью Firebase, поэтому я создал учетную запись службы и добавил service-account.json
в моей папке функций и добавил
const serviceAccount = require("./service-account.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://functionstest-54bd9 .firebaseio.com"
});
выше инициализировать функции. но когда я попытался развернуть функцию, я получил эту ошибку в консоли
Error: The default Firebase app already exists. This means you called initializeApp() more than once without providing an app name as the second argument. In most cases you only need to call initializeApp() once. But if you do want to initialize multiple apps, pass a second argument to initializeApp() to give each app a unique name.
at FirebaseAppError.FirebaseError [as constructor] (/home/me/Documents/TfmFirebase/functions/node_modules/firebase-admin/lib/utils/error.js:39:28)
at FirebaseAppError.PrefixedFirebaseError [as constructor] (/home/me/Documents/TfmFirebase/functions/node_modules/firebase-admin/lib/utils/error.js:85:28)
У меня есть только одно приложение, и я добавил только учетную запись службы. Нужно ли создавать другое приложение, чтобы создать только собственный токен? Как я могу это исправить?
Update1
Вот как я создаю собственный токен,
//create user
let writeResult = await db.collection('users').add({
user: user,
password: password,
isBlocked: false,
joiningDate: Date.now(),
phoneVerified: false,
deleted: false,
contacts:{
phone: phone
}
})
//create token
let tokenSnapShot = await admin.auth().createCustomToken(writeResult.id);
const userRef = db.collection('users').doc(writeResult.id);
let updateResult = await userRef.get();
t.update(userRef,{ "token": updateResult.data() });
Пожалуйста, поправьте меня, если я делаю это неправильно
1 ответ
Я просто работал над темой. Когда вы работаете на вашем местном хосте. Вам понадобится дополнительная безопасность для доступа к вашей базе данных. Таким образом, вам нужно будет администрировать служебный ключ, работая на localhost, и вы можете эмулировать только HTTPS- функции. При работе на хостинге Firebase вам не нужен этот ключ учетной записи. Но тоже отлично работает. Затем вам нужно удалить по вышеуказанному коду
1.admin.initializeApp(functions.config().firebase);
или же
const serviceAccount = require("./service-account.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://functionstest-54bd9 .firebaseio.com"
});