如何使用网络更新Firebase中的用户电子邮件字段?

时间:2018-08-30 18:01:43

标签: jquery firebase firebase-authentication

我正在与移动开发人员一起工作。

在移动应用中创建新用户时,他们也在firebase上注册了该用户。

移动应用程序还具有“管理员”部分,我可以在其中编辑用户信息。 现在,我有一个要求,即在更新任何用户信息时,还需要在firebase上更新用户电子邮件字段。

有什么方法可以更新Firebase上的用户字段?

我进行了很多搜索,找到了如何在Web上将引用添加到Firebase的方法,但是无法更新用户字段。

代码

在firebase的cshtml页面上提供参考

  <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);

这是从Google文档获得的Firebase数据库参考。

 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 :(得分:1)

您可以使用JavaScript SDK(https://firebase.google.com/docs/reference/js/firebase.User#updateEmail)的updateEmail()方法,但是,如果我没有记错的话,您应该通过用户身份验证。


您还可以通过Admin SDK更新用户(包括电子邮件),请参见https://firebase.google.com/docs/auth/admin/manage-users#update_a_user

在这种情况下,您无需通过用户身份验证。

您应该在托管环境(例如Cloud Functions)中使用此SDK,但也可以从您的服务器中使用。

如果您想在网络上使用此方法,则可以从网络前端调用HTTP云功能(或可调用的功能,请参见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