无法将FirebaseUI与片段配合使用 [英] Can't use FirebaseUI with fragments
问题描述
我正在尝试为我的应用实现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屋!