将Firebase电子邮件验证用于自定义电子邮件

时间:2019-01-01 21:42:23

标签: firebase firebase-authentication email-verification

我正在使用Ionic 3和使用Facebook的Firebase身份验证。如果用户在注册时未提供电子邮件ID或根本未进行验证,则Facebook不返回电子邮件ID。

我们的系统要求提供电子邮件ID。因此,作为后备,我们提示用户提供电子邮件ID。由于我们让用户在此步骤中手动提供电子邮件ID,因此需要进行验证。

似乎Firebase auth sendEmailVerifcation需要auth中已经存在的电子邮件ID。由于我们的情况是专门处理丢失的邮件,因此我们如何使用此功能来验证电子邮件ID?

也欢迎其他任何想法来处理它。这对我们来说是一个关键的阻止因素,因为人们通过提供虚假的电子邮件ID滥用我们的奖励系统。

我已经研究了sendEmailVerification API,但它似乎不接受任何参数来手动传递电子邮件ID。

constructor(public navCtrl: NavController, 
              public navParams: NavParams,
              private afAuth: AngularFireAuth,
              private fb: Facebook, 
              private platform: Platform,
              private core:CoreProvider,
              public viewCtrl: ViewController,
              private ddlSvc: DoodleDataProvider,
              private alertCtrl:AlertController,
              private toastCtrl: ToastController) {

                //block back button on android
                platform.registerBackButtonAction(() => {

                },1);

                afAuth.authState.subscribe(user => {
                  console.log("auth subscription finished: with user:" + JSON.stringify(user))

                  //go back if user could not be retireved or manual logout is set to true
                  if (!user || core.manualLogout == true) {   
                    return;
                  }

                  user.sendEmailVerfication() //problem here when email is null
                  console.log("initializing user")
                  this.createUser(user.uid)
                });
  }

1 个答案:

答案 0 :(得分:1)

电子邮件验证仅针对sign up with email/password authentication的用户 。目的是验证用户在注册时是否提供了有效的电子邮件地址。使用firebase.auth().createUserWithEmailAndPassword()登录用户后,通常需要使用电子邮件验证。

其他身份验证提供程序(例如Facebook)无法使用电子邮件验证,因为它们有自己的方式来管理用户的电子邮件地址。