Реагируйте - Смена пароля с использованием функций Firebase и администратора не работает - PullRequest
0 голосов
/ 04 февраля 2020

У меня возникли проблемы с обработкой функций 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);
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...