Firebase身份验证问题,Kotlin

juzqafwq  于 2022-12-13  发布在  Kotlin
关注(0)|答案(1)|浏览(176)

我在Firebase身份验证方面遇到一些问题。我正在使用Kotlin构建应用程序,但不断检索错误**'W/System:忽略标头X-Firebase-Locale,因为其值为空'**
我以前使用活动设置应用程序的时候就已经这样了。现在我已经转向MVP架构了,但是这似乎破坏了我的Firebase认证。我还确保在Firebase控制台中启用了电子邮件/密码登录方法。
如果有人能看一看,希望你能看到我哪里错了。非常感谢。
登入检视

package org.wit.hikingtrails.views.signIn

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import org.wit.hikingtrails.databinding.ActivitySignInBinding
import com.google.firebase.auth.FirebaseAuth
import org.wit.hikingtrails.activities.SignUpActivity
import org.wit.hikingtrails.views.hikeList.HikeListView
import org.wit.hikingtrails.views.signUp.SignUpView

class SignInView : AppCompatActivity() {

    lateinit var presenter: SignInPresenter
    private lateinit var binding: ActivitySignInBinding
    private lateinit var firebaseAuth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        presenter = SignInPresenter( this)
        super.onCreate(savedInstanceState)
        binding = ActivitySignInBinding.inflate(layoutInflater)
        setContentView(binding.root)

        firebaseAuth = FirebaseAuth.getInstance()
        binding.textView.setOnClickListener {
            val intent = Intent(this, SignUpView::class.java)
            startActivity(intent)
        }

        binding.button.setOnClickListener {
            val email = binding.emailEt.text.toString()
            val pass = binding.passET.text.toString()
            if (email.isNotEmpty() && pass.isNotEmpty()) {
                presenter.doLogin(email, pass)
            } else {
                Toast.makeText(this, "Empty Fields Are not Allowed !!", Toast.LENGTH_SHORT).show()
            }
        }
    }

    override fun onStart() {
        super.onStart()
        if(firebaseAuth.currentUser != null){
            val intent = Intent(this, HikeListView::class.java)
            startActivity(intent)
        }
    }
}

演示者登录:

package org.wit.hikingtrails.views.signIn

import android.content.ContentValues.TAG
import android.content.Intent
import android.util.Log
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.google.firebase.auth.FirebaseAuth
import org.wit.hikingtrails.views.hikeList.HikeListView
import timber.log.Timber
import timber.log.Timber.i

class SignInPresenter (val view: SignInView)  {
    private lateinit var loginIntentLauncher : ActivityResultLauncher<Intent>

    init{
        registerLoginCallback()
    }
    var auth: FirebaseAuth = FirebaseAuth.getInstance()

    fun doLogin(email: String, pass: String) {
//        view.showProgress()
        auth.signInWithEmailAndPassword(email, pass).addOnCompleteListener(view) { task ->
            if (task.isSuccessful) {
                val launcherIntent = Intent(view, HikeListView::class.java)
                loginIntentLauncher.launch(launcherIntent)
            } else {
                i("Login failed:")
//                val launcherIntent = Intent(view, HikeListView::class.java)
//                loginIntentLauncher.launch(launcherIntent)
            }
//            view.hideProgress()
        }
    }

    private fun registerLoginCallback(){
        loginIntentLauncher =
            view.registerForActivityResult(ActivityResultContracts.StartActivityForResult())
            {  }
    }

}
mspsb9vt

mspsb9vt1#

对于任何有同样问题的人:在Kotlin中,为了调试,我在演示者的doLogin()的else语句中使用了Timber.i(“signInWithCredential:failure ${task.exception?.message}”)

相关问题