有没有办法在 Kotlin Multiplatform 中使用 Firebase(身份验证)?

Arc*_*nes 6 kotlin firebase firebase-authentication kotlin-multiplatform

我有一个在 Android 中使用 Firebase 身份验证的项目。它运行良好,我想使用 Kotlin Multiplatform 的代码共享将同一个项目移植到 iOS 应用程序。

我最初认为我可以简单地创建一个

expect class FirebaseAuth
Run Code Online (Sandbox Code Playgroud)

//AndroidMain
actual class FirebaseAuth

//iOSMain
actual class FirebaseAuth
Run Code Online (Sandbox Code Playgroud)

但我真的不知道如何在 iOSMain 中使用 iOS 版本的 FirebaseAuth?有人可以在这里指导我吗?

Vla*_*ski 18

从现在开始,有一个关于 Kotlin Multiplatform firebase 产品的新官方库。支持的平台有 Android、iOS 和 JavaScript。

https://firebaseopensource.com/projects/gitliveapp/firebase-kotlin-sdk/

  • 它不是。它刚刚列在 firebase 网站上。也就是说,这是目前最好的选择。 (7认同)

Kev*_*gan 7

注意:这是一个旧答案。查看https://github.com/gitliveapp/firebase-kotlin-sdk/以获取合理维护的库。

我做了一个关于 KMP 库的演讲,并专门围绕 Firestore 构建了一个包装器来配合它。

https://github.com/touchlab/FirestoreKMP

https://vimeo.com/371460823

在该库中,我创建了扩展函数来实现功能。你的问题有点宽泛,但我可能会从以下开始:

//common
expect fun FirebaseAuth.signIn(email:String, password:String):Task<AuthDataResult>

//ios main
actual fun FirebaseAuth.signIn(email:String, password:String):Task<AuthDataResult> = signInWithEmail(email, password) //Figure out async return value
Run Code Online (Sandbox Code Playgroud)

异步返回的内容可能有点棘手,但 firestore 代码会有示例。这里一:

https://github.com/touchlab/FirestoreKMP/blob/master/firestore/src/commonMain/kotlin/co/touchlab/firebase/firestore/Query.kt#L17