如何使用AngularFire2更新Firebase中的用户?

时间:2017-03-06 05:01:59

标签: angular firebase firebase-authentication angularfire2

我可以轻松地使用它来创建用户:

this.af.auth.createUser({email: email, password: password});

但如何在用户详细信息创建后对其进行修改? (即:更改密码或电子邮件地址?)。我会想到这样的事情:

this.af.auth.updateUser({email: email, password: password});

但是没有updateUser方法?

3 个答案:

答案 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(() => {
  ...
});