首页 > 解决方案 > 在 Activity 中使用 FirebaseAuthUI 和 Navigation 组件

问题描述

我正在使用Firebase 预构建的身份验证 UI并使用 Jetpack 导航组件创建一个应用程序。但是,我对如何在我的活动之间导航有点困惑,因为this.findNavController()需要我将视图资源 ID传递给它(我假设它是我所在的当前视图的 ID?)。如果是这种情况,我将如何获得对 Firebase 预构建身份验证 UI 的引用?还是我误解了这是如何工作的?

对于上下文,我正在尝试从 auth 活动导航到 MapsActivity

在此先感谢您的帮助!

编辑

我使用我的资源 id尝试了这篇文章中的建议fragmentContainerView,但没有运气:(mapmapsActivityfirebaseAuthUI

Navigation.findNavController(this, R.id.mapsActivity).navigate(
                    FirebaseAuthUIDirections.actionFirebaseAuthUIToMapsActivity(user)
                )

这是我的 FirebaseAuthUI 活动的代码(请注意以下问题onActivityResult()

class FirebaseAuthUI: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        createSignInIntent()
    }

    private fun createSignInIntent() {
        val providers = arrayListOf(
            AuthUI.IdpConfig.GoogleBuilder().build(),
            AuthUI.IdpConfig.EmailBuilder().build()
        )

        startActivityForResult(
            AuthUI.getInstance()
                .createSignInIntentBuilder()
                .setAvailableProviders(providers)
                .build(),
            RC_SIGN_IN
        )
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == RC_SIGN_IN) {
            val response = IdpResponse.fromResultIntent(data)

            if (resultCode == Activity.RESULT_OK) {
                val user = FirebaseAuth.getInstance().currentUser
                this.findNavController().navigate(
                    FirebaseAuthUIDirections.actionFirebaseAuthUIToMapsActivity(user)
                )
            } else {
                val error = response?.error?.errorCode
                Toast.makeText(
                    this,
                    "⚠️ Unable to log in. Please contact Support. Error: $error",
                    Toast.LENGTH_LONG
                ).show()
            }
        }
    }

导航图

标签: androidfirebasefirebase-authenticationnavigationandroid-jetpack-navigation

解决方案


推荐阅读