У меня возникли проблемы с обработкой функций Firebase с помощью Firebase Admin. Я пытаюсь отредактировать пароль пользователя с помощью Admin, и я взял пример, приведенный Firebase, который можно адаптировать к функции:
// userDataObject = { password: userData.inputPassword }
exports.updateUserData = functions.https.onCall(
async (userId, userDataObject) => {
return await admin
.auth()
.updateUser(userId, userDataObject)
.then(userRecord => {
console.log(userRecord);
return { isError: false };
})
.catch(error => {
return { isError: true, errorMessage: error };
});
}
);
Хотя я могу легко удалить пользователя с помощью функций, используя Admin, я не может сделать то же самое при редактировании пароля пользователя. Функция выше, кажется, не работает. Я пытаюсь войти с новым паролем, но он не работает. Тем не менее, если я пытаюсь войти со старым паролем, это работает. Функция не возвращает ошибок, за исключением того, что, если с помощью Google Chrome и если я проверяю вкладку Сеть, она выдает ошибку, связанную с verifyPassword:
https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=...
Я не сделал настроить учетную запись для администратора, поскольку в документах Google Firebase указано, что это не требуется. Я видел журнал, чтобы увидеть, что возвращает userRecord, но кажется, что нет ничего плохого, за исключением passwordHa sh и passwordSalt, которые не определены.
У вас есть идеи о том, почему это не работает?
Редактировать : Вот как пользователь вызывает эту функцию (userData указана в функции updateUserDatabase):
async updateUser(userData) {
if (userData.inputPassword) {
let updateUserRegister = firebase
.functions()
.httpsCallable("updateUserData");
const userDataObject = {
password: userData.inputPassword
};
return await updateUserRegister(userData.id, userDataObject).then(
async result => {
if (result.isError) {
return result;
} else {
return updateUserDatabase(userData);
}
}
);
} else {
return updateUserDatabase(userData);
}
}