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

Is there a way to use Firebase (Authentication) with Kotlin Multiplatform?

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

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

expect class FirebaseAuth

//AndroidMain
actual class FirebaseAuth

//iOSMain
actual class FirebaseAuth

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

注意:这是一个旧答案。查看 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

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

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

我正在为 Kotlin Multiplatform 构建和发布 Firebase Wrappers!

请记住,只有 JS、JVM 和 iOS 之间的公共 API 可用。

这里是:https://github.com/lamba92/firebase-multiplatform

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

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