我可以轻松地使用它来创建用户:
this.af.auth.createUser({email: email, password: password});
但如何在用户详细信息创建后对其进行修改? (即:更改密码或电子邮件地址?)。我会想到这样的事情:
this.af.auth.updateUser({email: email, password: password});
但是没有updateUser
方法?
答案 0 :(得分:1)
正如here所述,您可以订阅FirebaseAuthState observable并使用Firebase的updateProfile()
方法。
private authState: FirebaseAuthState;
constructor(private af: AngularFire) {
this.af.auth.take(1).subscribe(auth => {
this.authState = auth;
}
authState.auth.updateProfile({
displayName: 'display name',
photoURL: 'some/url'
}).then(() => {
...
});
答案 1 :(得分:1)
我曾经遇到过这个问题,但还没有得到angularfire2答案。
以下是我遇到此问题的原生firebase方式。
public auth: any;
constructor(@Inject(FirebaseApp) firebaseApp: any) {
this.auth = firebaseApp.auth();
}
reset(targetEmail: any) {
this.auth.sendPasswordResetEmail(targetEmail);
}
注意:强>
似乎我们无法直接更改密码,只是将密码重置密码发送到目标电子邮件地址。
答案 2 :(得分:1)
使用AngularFire2,您只需要在路径中添加“ currentUser”即可。
this.af.auth.currentUser.updateEmail(email)
.then(() => {
...
});
您还需要在重新登录之前重新登录,因为Firebase需要全新的身份验证才能执行某些帐户功能,例如删除帐户,更改电子邮件或密码。
对于我刚刚实施的项目,我只是将登录名包含在更改密码/电子邮件表单中,然后在“ updateEmail”调用之前将其称为“ signInWithEmailAndPassword”。
要更新密码,只需执行以下操作:
this.af.auth.currentUser.updatePassword(password)
.then(() => {
...
});