我正在与移动开发人员合作。
当他们在移动应用程序中创建新用户时,他们也会在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