我正在与移动开发人员一起工作。
在移动应用中创建新用户时,他们也在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);
});
答案 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