Firebase验证密码重置:如何正确发送包含确认码的密码重置电子邮件?

时间:2018-05-23 08:04:47

标签: angular typescript firebase firebase-authentication ionic3

我坚持让Firebase发送密码重置电子邮件,其中包含方法firebase.auth().verifyPasswordResetCode(code)所需的确认码。

我正在使用sendPasswordResetEmail(email)方法,电子邮件中包含一个链接,可让用户创建新密码。

由于我对密码设置了一些限制(它们必须包含一个数字),这将打破限制。

我在文档中找不到有关如何将确认代码发送到电子邮件以进行密码重置的任何内容。

这就是我使用它的方式:

public sendResetPasswordEmail(email: string): Promise<any> {

  return this.fireAgent.firebase.auth().sendPasswordResetEmail(email, {
    url: 'http://localhost:8100/',
    handleCodeInApp: true
  });

}

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

据我所知,Firebase身份验证不允许您指定用户可以在重置密码电子邮件为您提供的网址上插入的密码类型。但是,您应该能够使用验证码验证服务来实现它。

要使用验证码,您需要在ActionCodeSetting方法中添加对象sendPasswordResetEmail。它应该是这样的:

var actionCodeSettings = {
  // URL you want to redirect back to. The domain (www.example.com) for this
  // URL must be whitelisted in the Firebase Console.
  url: 'https://www.example.com/finishSignUp?cartId=1234',
  // This must be true.
  handleCodeInApp: true,
  iOS: {
    bundleId: 'com.example.ios'
  },
  android: {
    packageName: 'com.example.android',
    installApp: true,
    minimumVersion: '12'
  }
};

在您的情况下,您唯一感兴趣的是handleCodeInApp。通过这种方式,电子邮件将为您提供您需要手动放在verifyPasswordResetCode上的代码。

在此之后,您可以手动将新密码放入客户端,而无需使用Firebase电子邮件提供商。在检查验证码对confirmPasswordReset("verificationCode", "newPassword")有效后,请致电verifyPasswordResetCode

希望这对你有帮助!