无法将FirebaseUI与片段配合使用 [英] Can't use FirebaseUI with fragments

查看:60
本文介绍了无法将FirebaseUI与片段配合使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为我的应用实现FirebaseAuth UI,但是遇到了一些问题.

I'm trying to implement FirebaseAuth UI to my app, but I've ran into some issues.

我正在尝试将FirebaseUIActivity.kt创建为片段,但是当我致电支持片段管理器时,它崩溃了.

I'm trying to create the FirebaseUIActivity.kt as a fragment, but when I call the support fragment manager it crashes.

  supportFragmentManager.beginTransaction().replace(R.id.fragment_container, FirebaseUIActivity.newInstance()).commit()

这是一些代码:

MainActivity.kt

MainActivity.kt

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

    // Support toolbar
    setSupportActionBar(binding.toolbar)

    supportFragmentManager.beginTransaction().replace(R.id.fragment_container, FirebaseUIActivity.newInstance()).commit()
    }

}

FirebaseUiActivity.kt

FirebaseUiActivity.kt

class FirebaseUIActivity : Fragment() {
// Choose authentication providers

companion object {
    fun newInstance() = FirebaseUIActivity()
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    val binding: FirebaseUiFragmentBinding = DataBindingUtil.inflate(inflater, R.layout.firebase_ui_fragment, container, false)

    return binding.root

}

override fun onResume() {
    super.onResume()
}
private val providers = arrayListOf(
    AuthUI.IdpConfig.EmailBuilder().build(),
    AuthUI.IdpConfig.GoogleBuilder().build()
)

override fun startActivityForResult(intent: Intent?, requestCode: Int) {
    super.startActivityForResult(intent, requestCode)

    AuthUI.getInstance().createSignInIntentBuilder()
        .setAvailableProviders(providers)
        .build()

    }
}

错误:

     Caused by: java.lang.IllegalStateException: Check your google-services plugin configuration, the default_web_client_id string wasn't populated.
    at com.firebase.ui.auth.util.Preconditions.checkConfigured(Preconditions.java:90)
    at com.firebase.ui.auth.AuthUI$IdpConfig$GoogleBuilder.<init>(AuthUI.java:957)
    at com.example.katzinbetihot.Firebase.FirebaseUIActivity.<init>(FirebaseUIActivity.kt:40)
    at com.example.katzinbetihot.Firebase.FirebaseUIActivity$Companion.newInstance(FirebaseUIActivity.kt:21)
    at com.example.katzinbetihot.main.MainActivity.onCreate(MainActivity.kt:24)
    at android.app.Activity.performCreate(Activity.java:7149)
    at android.app.Activity.performCreate(Activity.java:7140)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1288)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3031)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3191) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1920) 
    at android.os.Handler.dispatchMessage(Handler.java:106) 
    at android.os.Looper.loop(Looper.java:193) 
    at android.app.ActivityThread.main(ActivityThread.java:6912) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

Emek,谢谢您的帮助!

Thanks for your help in advance, Emek!

推荐答案

尝试将此代码行添加到您的strings.xml文件中

Try adding this code line to your strings.xml file

<string name="default_web_client_id" translatable="false">webClientId.apps.googleusercontent.com</string>

您可以从Google控制台获取您的WEB CLIENT ID.选择您的项目,然后转到 API&服务> 凭据,并在 OAuth 2.0客户端ID 下找到名为 Web客户端的ID.复制并替换上面的代码.

You can get your WEB CLIENT ID from Google Console. Select your project, then go to API & Services > Credentials and under OAuth 2.0 client IDs you will find a ID with the name Web Client. Copy and replace the above code with it.

如果不存在Web客户端ID,则可以单击创建凭据> OAuth客户端ID ,然后选择 Web应用程序作为应用程序在下一页上键入,然后单击创建.

If a Web Client ID does not exist, you can click on Create Credentials > OAuth client ID then select Web Application as the application type on the next page and click create.

这篇关于无法将FirebaseUI与片段配合使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆