【问题标题】:How can i make FirebaseAuth.AuthStateListener work in Kotlin?如何让 FirebaseAuth.AuthStateListener 在 Kotlin 中工作?
【发布时间】:2020-04-13 21:38:41
【问题描述】:
class LoginActivity : AppCompatActivity() {

    private val firebaseAuth = FirebaseAuth.getInstance()
    private val firebaseAuthListener = FirebaseAuth.AuthStateListener {
        val user = firebaseAuth.currentUser?.uid
        user?.let {
            startActivity(HomeActivity.newIntent(this))
            finish()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        loginProgressLayout.setOnTouchListener { v, event -> true }
    }

    fun onLogin(v: View) {
        var proceed = true
        if (emailET.text.isNullOrEmpty()) {
            emailTIL.error = "email is required"
            emailTIL.isErrorEnabled = true
            proceed = false
        }
        if(passwordET.text.isNullOrEmpty()) {
            passwordTIL.error = "password is required"
            passwordTIL.isErrorEnabled = true
            proceed = false
        }
        if(proceed){
            loginProgressLayout.visibility = View.VISIBLE
            firebaseAuth.signInWithEmailAndPassword(emailET.text.toString(), passwordET.text.toString())
                .addOnCompleteListener { task ->
                    if (!task.isSuccessful){
                        loginProgressLayout.visibility = View.GONE
                        Toast.makeText(this@LoginActivity, "LoginError", Toast.LENGTH_SHORT).show()
                    }
                }
                .addOnFailureListener { exception ->
                    exception.printStackTrace()
                    loginProgressLayout.visibility = View.GONE
                }
        }
    } //onLogin end

我检查了我从firebaseAuth.signInWithEmailAndPassword 代码行获得了一些身份验证号码。 但我的问题是关于属性FirebaseAuth.AuthStateListener,它不起作用。 当我获得身份验证号码然后我希望AuthStateListener 工作时!

我阅读了 Firebase API,但它不起作用。我怎样才能使FirebaseAuth.AuthStateListener 工作?

【问题讨论】:

    标签: android firebase kotlin firebase-authentication


    【解决方案1】:

    您需要与您的听众联系addAuthStateListener才能使其工作。

    例如在您的活动的onStart 中:

    override fun onStart() {
        super.onStart()
        firebaseAuth!!.addAuthStateListener(this.firebaseAuthListener!!)
    }
    

    我建议研究这个答案(更多):Android Studio (Kotlin) - User has to log back into app every time app is closed

    【讨论】:

    • private val firebaseAuthListener = FirebaseAuth.AuthStateListener { val user = firebaseAuth.currentUser?.uid user?.let { startActivity(HomeActivity.newIntent(this)) finish() } }
    • 只有这个代码“FirebaseAuth.AuthStateListener”不起作用。我在 Firebase 中进行了虚拟身份验证,我想登录,但没有成功!前几天,我用同样的方法做的,但今天它不起作用..
    • 如果它不起作用,你做了一些不同的事情。例如,您问题中的代码不会为侦听器调用addAuthStateListener,如果您希望调用它,这是必需的。
    • 覆盖 fun onStart() { super.onStart() firebaseAuth!!.addAuthStateListener {this.firebaseAuthListener!! } } 覆盖有趣的 onStop() { super.onStop() firebaseAuth.removeAuthStateListener {firebaseAuthListener } }
    • 我在我的项目中添加了这两个代码,但它仍然不起作用。我初始化了 firebaseAuthListener 属性,然后,FirebaseAuth.AuthStateListener 总是自动知道有关 Firebase 身份验证的更改。不是吗??我不知道我应该在哪里调用 addAuthStateListener ....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2019-05-06
    • 2017-04-01
    相关资源
    最近更新 更多