【问题标题】:Using firebase email verification for a custom email对自定义电子邮件使用 Firebase 电子邮件验证
【发布时间】:2019-05-28 16:16:25
【问题描述】:

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

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

似乎 firebase auth sendEmailVerifcation 需要身份验证中已经存在的电子邮件 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)
                });
  }

【问题讨论】:

  • 如何也为他们创建一个电子邮件+密码帐户,然后linking the email+password and the Facebook accounts?完成后,您可以使用sendEmailVerfication发送验证消息。
  • 我们基于 ionic 3 的客户端应用程序是一个面包店应用程序,我们希望在用户登录和帐户方面保持最简单。所以我们喜欢在 facebook 上使用一键登录的想法。现在用询问电子邮件和密码的要求替换它是客户不会高兴的。是否有一种解决方法,例如使用提供的电子邮件和后台默认密码创建带有电子邮件和密码的帐户,然后发送验证链接?基本上,只有当 fb 不给我们时,我们才需要验证电子邮件。我们希望保持用户体验不变。
  • 您可以生成一个随机密码。我不会使用默认密码,因为这意味着知道密码的任何人都可以登录每个帐户。
  • 我理解默认密码的风险。但我的意图是使用这种电子邮件 + pwd 机制只是为了能够在某些情况下使用 sendEmailVerification 链接。我总是想强制用户使用 facebook 登录。你觉得这行得通吗?

标签: firebase firebase-authentication email-verification


【解决方案1】:

电子邮件验证适用于sign up with email/password authentication 的用户。目的是验证用户在注册时是否提供了有效的电子邮件地址。您通常希望在使用 firebase.auth().createUserWithEmailAndPassword() 登录用户后使用电子邮件验证。

电子邮件验证不适用于其他身份验证提供商(例如 Facebook),因为他们有自己的方式来管理用户的电子邮件地址。

【讨论】:

  • 我可以使用默认密码和用户提供的电子邮件解决一些问题吗?基本上我需要验证的是只有当 fb 没有给我回电子邮件时。所以在这些情况下,我需要一种发送验证电子邮件的方法。但是对于所有用户来说,登录体验需要与使用 facebook 登录时相同。
  • 没有。正如我所说,电子邮件验证仅适用于电子邮件/密码验证。
猜你喜欢
  • 2021-05-26
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
相关资源
最近更新 更多