Я испытываю пользовательский интерфейс 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
не была выполнена.Я не знаю почему.
Пожалуйста, помогите!
ОБНОВЛЕНИЕ:
В соответствии с указаниями, данными Петром в его ответе, зависимости были обновлены, как упоминалось здесь , но проблема все еще существует.