【问题标题】:how to verify user email in firebase authentication? [duplicate]如何在 Firebase 身份验证中验证用户电子邮件? [复制]
【发布时间】:2018-10-04 00:28:33
【问题描述】:

在我的应用程序中,当用户输入电子邮件和密码时,他可以注册并登录。 但是我如何确保注册用户是电子邮件所有者而不是使用某人的电子邮件(我正在使用 firebase 进行身份验证)。

  • 要求用户在注册时验证其电子邮件?
  • 除非他们激活电子邮件,否则阻止他们登录?

如果有上述情况,怎么办?

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    您可能需要更新您的 Firebase SDK 版本。 auth 模块中的 Firebase 用户可以使用函数user.SendEmailVerification 发送电子邮件验证:

    举例

    FirebaseAuth auth = FirebaseAuth.getInstance();
    FirebaseUser user = auth.getCurrentUser();
    
    user.sendEmailVerification()
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        Log.d(TAG, "Email sent.");
                    }
                }
            });
    

    如果您想限制对应用程序的访问,您需要使用user.isEmailVerified()。你如何使用它取决于你希望你的应用表现出什么样的行为。请注意,FirebaseUser 对象已缓存,因此您可能需要调用 .getCurrentUser().reload()。您可以在计时器上执行此操作,也可以在用户返回应用程序时执行此操作。或者,您可以在登录后进行检查,如果未通过验证,则将其注销,并显示一条消息,说明它们未通过验证并等待他们重试。

    有关更完整的讨论,请参阅: https://firebase.googleblog.com/2017/02/email-verification-in-firebase-auth.html

    【讨论】:

    • 你是对的。此功能(sendEmailVerification)可用,但问题是如何以及在哪里使用?当用户注册或登录时或什么时候?
    • 我编辑了答案,包括讨论如何使用 user.isEmailVerified()。您如何使用它取决于您,但最简单的方法可能是发送验证电子邮件,然后在注册时将其注销,如果他们的帐户尚未验证,则在登录后立即将其注销并显示一条消息(可能会提议重新发送验证电子邮件)。
    猜你喜欢
    • 2018-02-10
    • 2022-08-07
    • 2023-03-18
    • 2021-03-26
    • 1970-01-01
    • 2021-11-21
    • 2019-05-01
    • 2018-09-17
    • 2023-04-09
    相关资源
    最近更新 更多