Как обновить поле электронной почты пользователя в Firebase с помощью сети? - PullRequest
0 голосов
/ 30 августа 2018

Я работаю с разработчиком мобильных приложений.

Когда они создают нового пользователя в мобильном приложении, они также регистрируют пользователя в firebase.

Мобильное приложение также имеет раздел администратора, где я могу редактировать информацию о пользователе. Теперь у меня есть требование, что при обновлении любой пользовательской информации мне также необходимо обновить поле электронной почты пользователя на firebase.

Есть ли способ обновить поле пользователя на firebase?

Я много искал и нашел способ добавить ссылку на firebase в Интернете, но не могу обновить поле пользователя.

код

Данная ссылка на cshtml странице firebase

  <script src="https://www.gstatic.com/firebasejs/4.12.0/firebase.js"></script>

Этот код я добавил в файл jquery. Конфигурация заменена в целях безопасности.

 var config = {
                        apiKey: "Apikey",
                        authDomain: "domainname",
                        databaseURL: "given db url",
                        projectId: "ProjectId",
                        storageBucket: "storageBucket",
                        messagingSenderId: "000000"
                    };
                    firebase.initializeApp(config);

Используется для ссылки на базу данных Firebase, полученной из документа Google.

 var firebaseRefs = firebase.database().ref();

Этот код я использую для обновления поля электронной почты в узле пользователей firebase

var uid = '';
                firebase
               .auth()
               .signInWithEmailAndPassword(data.Email, data.Password)
               .then(function () {
                   auth = user;
                  firebaseRefs.ref("users/" + data.Id).update({ email: data.Email});
               .catch(function (error) {
                   console.log("Login Failed!", error);
               });

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете использовать updateEmail() метод JavaScript SDK (https://firebase.google.com/docs/reference/js/firebase.User#updateEmail),, но, если я не ошибаюсь, вы должны быть аутентифицированы как сам пользователь.


Вы также можете обновить пользователя (включая электронную почту) через Admin SDK, см. https://firebase.google.com/docs/auth/admin/manage-users#update_a_user.

В этом случае вам не нужно проходить аутентификацию пользователя.

Вам следует использовать этот SDK из управляемой среды, например облачных функций, но он также может быть и с вашего сервера.

Если вы хотите использовать этот метод из Интернета, вы можете вызвать из веб-интерфейса функцию HTTP Cloud (или вызываемую функцию, см. https://firebase.google.com/docs/functions/callable)


После вашего обновления вы можете сделать следующее:

firebase
    .auth()
    .signInWithEmailAndPassword(data.Email, data.Password)
    .then(function (userCredential) {
         var user = userCredential.user;
         return user.updateEmail(data.Email);
    })
    .then(function () {
         return firebaseRefs.ref("users/" + data.Id).update({ email: data.Email});
    })
    .catch(function (error) {
         console.log("Login Failed!", error);
    });

Обратите внимание, что signInWithEmailAndPassword() возвращает UserCredential, из которого вы получаете user, см. https://firebase.google.com/docs/reference/js/firebase.auth.Auth#signInWithEmailAndPassword

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...