我正在使用ionic 3和firebase身份验证使用facebook。如果用户在注册时没有提供电子邮件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 retrieved 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)
});
}
2条答案
按热度按时间ql3eal8s1#
电子邮件验证仅适用于使用电子邮件/密码验证进行注册的用户。其目的是验证用户在注册时是否提供了有效的电子邮件地址。您通常希望在使用
firebase.auth().createUserWithEmailAndPassword()
登录用户后使用电子邮件验证。电子邮件验证不适用于其他身份验证提供商(如Facebook),因为他们有自己的方式来管理用户的电子邮件地址。
nzk0hqpo2#
正如您所注意到的,
sendEmailVerifcation
仅适用于auth用户对象中配置的电子邮件,您不能向自定义电子邮件发送电子邮件验证。特别是在电子邮件最初是
null
的情况下,您可以做的是在发送验证电子邮件之前,使用您提示他们输入的电子邮件地址更新auth用户电子邮件: