我正在使用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)
});
}
答案 0 :(得分:1)
电子邮件验证仅针对sign up with email/password authentication的用户 。目的是验证用户在注册时是否提供了有效的电子邮件地址。使用firebase.auth().createUserWithEmailAndPassword()
登录用户后,通常需要使用电子邮件验证。
其他身份验证提供程序(例如Facebook)无法使用电子邮件验证,因为它们有自己的方式来管理用户的电子邮件地址。