Firebase AuthUI не показывает вход в поток - PullRequest
0 голосов
/ 18 февраля 2019

Я испытываю пользовательский интерфейс Firebase в простом проекте Jetpack.Я следовал инструкциям здесь .

Но подписанный в пользовательском интерфейсе поток не отображается, вместо этого он показывает мне основное действие - пустой макет ограничения.

Мой кодследующим образом:

MainActivity.kt

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.firebase.ui.auth.AuthUI
import com.google.firebase.auth.FirebaseAuth


class MainActivity : AppCompatActivity() {

    private lateinit var mFirebaseAuth: FirebaseAuth
    private  lateinit var mAuthStateListener: FirebaseAuth.AuthStateListener


    override fun onCreate(savedInstanceState: Bundle?) {

        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Initialize Firebase Auth
        mFirebaseAuth = FirebaseAuth.getInstance()


        mAuthStateListener = FirebaseAuth.AuthStateListener { firebaseAuth -> // line 25


                val user = firebaseAuth.currentUser


                if (user != null){
                    Toast.makeText(applicationContext, "Already signed in", Toast.LENGTH_LONG).show()
                }
                else{
                    // Choose authentication providers
                    val providers = arrayListOf(
                        AuthUI.IdpConfig.EmailBuilder().build(),
                        AuthUI.IdpConfig.GoogleBuilder().build())

                    // Create and launch sign-in intent
                    startActivityForResult(
                        AuthUI.getInstance()
                            .createSignInIntentBuilder()
                            .setIsSmartLockEnabled(false)
                            .setAvailableProviders(providers)
                            .setTheme(R.style.AppTheme)      // Set theme
                            .setAvailableProviders(providers)
                            .setTosAndPrivacyPolicyUrls(
                                "https://example.com/terms.html",
                                "https://example.com/privacy.html")

                            .build(),
                        RC_SIGN_IN)
                }
        }
    }

    public override fun onStart() {
        super.onStart()
        mFirebaseAuth.addAuthStateListener { mAuthStateListener }
    }

    override fun onPause() {
        super.onPause()
        mFirebaseAuth.removeAuthStateListener { mAuthStateListener }
    }

    companion object {

        private const val RC_SIGN_IN = 123
    }

}

Зависимости

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha02'

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

     // firebase
     implementation 'com.firebaseui:firebase-ui-auth:4.3.1'
     implementation 'com.google.firebase:firebase-core:16.0.6'
     implementation 'com.google.firebase:firebase-auth:16.1.0'
     implementation 'com.google.android.gms:play-services-auth:16.0.1'


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.2-alpha01'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.2-alpha01'
}

Для провайдеров, как вы видите, ятолько с использованием электронной почты и входа в Google.Эти провайдеры включены в консоли Firebase.У меня также есть отпечаток, указанный в проекте (который был там по умолчанию).

Я попытался отладить, установив точку останова в строке 25, я увидел, что лямбда AuthStateListener не была выполнена.Я не знаю почему.

Пожалуйста, помогите!


ОБНОВЛЕНИЕ:

В соответствии с указаниями, данными Петром в его ответе, зависимости были обновлены, как упоминалось здесь , но проблема все еще существует.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

На самом деле после публикации проблемы на github repo я узнал, что входящий поток появляется при наличии подключения к Интернету (в моем случае он включал Wifi).

Таким образом, эта проблема позволила одному из членов репо выявить уязвимость в Firebase Auth UI (Android), он создал запрос на получение , который позволяет конечным пользователям выбирать метод аутентификации, когда онив автономном режиме.

0 голосов
/ 18 февраля 2019

Поскольку вы используете версию FirebaseUI 4.1.0, то в соответствии с документами:

Начиная с версии 4.1.0, FirebaseUI имеет следующие версии зависимостей:

Library                 Version
firebase-auth           16.0.1
play-services-auth      15.0.1
firebase-database       16.0.1
firebase-firestore      17.0.1
firebase-storage        16.0.1

подробнее здесь:

https://github.com/firebase/FirebaseUI-Android/tree/version-4.1.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...