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



我正在与移动开发人员合作。

当他们在移动应用程序中创建新用户时,他们也会在Firebase上注册用户。

移动应用程序也有管理部分,我可以在其中编辑用户信息。 现在我有一个要求,在更新任何用户信息的同时,我还需要更新 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);

这用于从谷歌文档中获取的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);
});

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


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

在这种情况下,无需以用户身份进行身份验证。

您应该从托管环境(例如云函数(使用此 SDK,但它也可以来自您的服务器。

如果要从 Web 使用此方法,可以从 Web 前端调用 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

相关内容

最新更新