Почему мой код kotlin для аутентификации Firebase не работает? - PullRequest
0 голосов
/ 27 марта 2019

Я зачислен в онлайн CBT и изучаю Kotlin для программирования на Android.Видеоролики были сделаны в 2017 году, и я получил коды приложений, которые были сделаны в серии уроков.Я следовал каждому шагу, пока не подключил свое приложение к Firebase и даже не ввел образцы пользовательских данных в Аутентификацию и установил общедоступные правила использования, но, к моему удивлению, тот же код Kotlin, который, как было показано, работает безупречно в видеоуроках, не работает для меня.Затем я попробовал примеры кодов LoginActivity.kt и RegisterActivity.kt из github, даже эти коды не работают.Пожалуйста, посмотрите мои коды и помогите разобраться с этой проблемой.Когда я нажимаю на loginBtn, приложение вылетает, а данные не отправляются в Firebase.Logcat показывает следующую ошибку:

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.paramlowe.mypg2. Make sure to call 
FirebaseApp.initializeApp(Context) first.
    at com.google.firebase.FirebaseApp.getInstance(SourceFile:218)
    at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source:1)
    at com.punjabweb.myapp.LoginActivity.loginUser(LoginActivity.kt:50)
    at 
com.punjabweb.myapp.LoginActivity.access$loginUser(LoginActivity.kt:25)
    at 

com.punjabweb.myapp.LoginActivity $ onCreate $ 2.onClick (LoginActivity.kt: 43)

и мой код котлина для LoginActivity.kt приведен ниже:

package com.punjabweb.myapp2

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.Button
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import kotlinx.android.synthetic.main.activity_login.*

class LoginActivity : AppCompatActivity() {
    //Firebase references
    private var mAuth: FirebaseAuth? = null
//    FirebaseApp.initializeApp(this)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        val loginBtn = findViewById<View>(R.id.btnLogin) as Button



        loginBtn.setOnClickListener {
            loginUser()
        }

    } 


    private fun loginUser() {
        mAuth = FirebaseAuth.getInstance()
        val email = etEmail?.text.toString()
        val password = etPassword?.text.toString()
        if (TextUtils.isEmpty(email) && TextUtils.isEmpty(password)) {
             Toast.makeText(this, "Enter all details", Toast.LENGTH_SHORT).show()

        } else {
             mAuth!!.signInWithEmailAndPassword(email, password)
                 .addOnCompleteListener(this) { task ->
     if (task.isSuccessful) {  
 // Sign in success, update UI with signed-in user's information
     var firebasUser = FirebaseAuth.getInstance().currentUser!!

                        //      updateUI()
                    } else {
                        // If sign in fails, display a message to the user. 
                           Toast.makeText(
                            this@LoginActivity, "Authentication failed.",
                            Toast.LENGTH_SHORT
                        ).show()
                    }
                }
        }

        fun updateUI() {
            val intent = Intent(this@LoginActivity, MainActivity::class.java)
//            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
        startActivity(intent)
        }
}
 }

1 Ответ

0 голосов
/ 27 марта 2019

Вам необходимо включить аутентификацию электронной почты firebase в консоли. Похоже, ваш код в порядке с первого взгляда. Это может быть вызвано тем, что у вас нет подключаемого модуля google-services в конце gradle приложения:

dependencies {
    ....
}

apply plugin: 'com.google.gms.google-services'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...