Firebase AuthUI未显示登录流程

问题描述 投票:0回答:2

我正在尝试firebase auth UI ins简单的Jetpack项目。我按照说明here

但是没有显示已登录的UI流程,而是显示了主要活动,即空约束布局。

我的代码如下

Manaktivitykkt

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 lambda没有被执行。我不知道为什么。

请帮忙!


更新:

根据彼得在他的回答中提供的指示,依赖关系更新如here所述,但问题仍然存在。

android firebase firebase-authentication firebaseui android-jetpack
2个回答
0
投票

既然您使用的是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


0
投票

实际上在github repo上发布issue之后,我发现当有互联网连接时出现了登录流程(在我的情况下,它保持Wifi打开)。

所以这个问题允许回购的一个成员识别Firebase Auth UI(Android)中的一个缺陷,他创建了一个pull request,允许最终用户在离线时选择auth方法。

© www.soinside.com 2019 - 2024. All rights reserved.