注意:我能够弄清楚这一点。无需更改Firebase中的规则。请参见下面的代码。

原始帖子
我有一个IOS应用程序,因此决定构建Android / Kotlin版本,并且在Firebase / isEmailVerify方面遇到了麻烦。我可以注册一个新用户并发送电子邮件进行验证,但是,如果我不验证,我仍然可以登录。我是 Kotlin 的新手。任何帮助是极大的赞赏。

更新代码

class LoginActivity : AppCompatActivity() { 
 
lateinit var auth: FirebaseAuth 
private var emailVerifier: Boolean = true 
 
private val emailVerificationAlert = { _: DialogInterface, _: Int -> 
    Toast.makeText(this.applicationContext, android.R.string.yes, Toast.LENGTH_SHORT).show() 
} 
 
override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_login) 
    auth = FirebaseAuth.getInstance() 
} 
 
private fun verifyEmail() { 
    val user = FirebaseAuth.getInstance().currentUser 
    if (user != null) { 
        emailVerifier = user.isEmailVerified() 
    } 
    if (emailVerifier) { 
        finish() 
    } else { 
        userDidNotVerify() 
        auth.signOut() 
    } 
} 
 
fun loginBtnClicked(view: View) { 
    val email = loginEmailTxt.text.toString() 
    val password = loginPasswordTxt.text.toString() 
 
    auth.signInWithEmailAndPassword(email, password) 
        .addOnSuccessListener { exception -> 
            println("USER LOGGED IN") 
            verifyEmail() 
        } 
        .addOnFailureListener { exception -> 
            Log.e("Exception", "Could not sign in user - ${exception.localizedMessage}")  
    } 
} 
 
private fun userDidNotVerify() { 
    val builder = android.app.AlertDialog.Builder(this) 
    with(builder) { 
        this.setTitle("Confirm your email address.") 
        this.setMessage("A confirmation email has been sent to" + " " + (loginEmailTxt.text) + " " + 
                    "." + " " + "Click on the confirmation link to activate your account") 
        this.setPositiveButton("OK", DialogInterface.OnClickListener(function = emailVerificationAlert)) 
        this.show() 
    } 
} 
 
fun loginCreateClicked(view: View) { 
    val createIntent = Intent(this, CreateUserActivity::class.java) 
    startActivity(createIntent) 
} 

}

请您参考如下方法:

预计用户仍可以在验证电子邮件之前登录。这为您的应用提供了一种方法,以允许用户请求发送另一封验证电子邮件,以防第一封邮件出现问题。

如果要限制用户在验证电子邮件之前可以执行的操作,可以在UserInfo对象上检查isEmailVerfied(),并且可以在安全规则中使用auth.token.email_verified来限制他们对Firebase提供的数据库和存储的访问。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!