权限缺失或不足

问题描述 投票:0回答:1

目前我已经在 KMM 项目中为 Android 和 iOS 设置了 firebase。 我已经在两个项目上添加了 firebase sdk,以便本机部分来配置它们。

在共享方面,我正在使用

gitlive firebase sdk
库,我在其中对 firestore 数据库进行查询。所以查询数据的逻辑是
SHARED

这是查询:

    @OptIn(ExperimentalCoroutinesApi::class)
    override fun invoke(): Flow<List<TicketUi>> = flow {
        val list =  Firebase.firestore
            .collection("users")
            .document(Firebase.auth.currentUser!!.uid)
            .collection("receipts")
            .snapshots
            .mapLatest {
                it.documents.map { doc ->
                    // Additional code converting the document to a Receipt
                }
            }

        // Collect the flow and emit the list
        list.collect { ticketUiList ->
            emit(ticketUiList)
        }
    }.catch { error ->
        Logger.e { "Error in GetAllTicketsUseCaseImpl.invoke(): ${error.cause} && message: ${error.message}" }
        emit(emptyList<TicketUi>())
    }

我已经设置了模拟器以便在两个平台上进行测试。

安卓 效果很好,一切都很好

iOS:

  • 我在 Firebase 上创建了一个 iOS 项目
  • GoogleServices-Info.plist 已添加到项目中
  • 我已将 Firebase SDK 添加到项目中,其中包括
    Auth
    Firestore
  • AppDelegate
    我调用以下代码
        FirebaseApp.configure()
        
        // Firestore Configuration
        let settings = Firestore.firestore().settings
        settings.host = "127.0.0.1:8080"
        settings.cacheSettings = MemoryCacheSettings()
        settings.isSSLEnabled = false
        Firestore.firestore().settings = settings
        FirebaseConfiguration.shared.setLoggerLevel(.debug)
        
        Auth.auth().useEmulator(withHost:"127.0.0.1", port:8081)
        let auth = Auth.auth()
        
         if auth.currentUser == nil {
             // Sign in anonymously
             auth.signInAnonymously { authResult, error in
                 if let error = error {
                     // Sign-in failed∂
                     print("signInAnonymously:failure \(error.localizedDescription)")
                 } else {
                     // Sign-in succeeded
                     print("signInAnonymously:success")
                     if let user = authResult?.user {
                         print("User: \(user.uid)")
                     }
                 }
             }
         } else {
             // Already signed in
             print("Already logged in: \(auth.currentUser?.uid ?? "No UID")")
         }

酷。是时候从 firestore 查询该特定用户的数据了。显示以下错误:

错误域=FIRFirestoreErrorDomain代码=7“缺失或不足 权限。" UserInfo={NSLocalizedDescription=缺失或不足 权限。

11.1.0 - [FirebaseFirestore][I-FST000001] 监听 users/9hYte9W9Sf1FlH6vMJdnVs0qPNLd/receipts 的查询失败:权限缺失或不足。

这是 firestore 模拟器的规则

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

我不明白我可能会错过什么,这一定是 iOS 端出了问题,因为在 Android 上我可以毫无问题地监听查询并检索数据。

有什么我可能错过的吗?或者有一种方法可以获取更多关于到底哪里出了问题的数据?

swift firebase google-cloud-firestore kotlin-multiplatform firebase-tools
1个回答
0
投票

找到根本原因了,看起来它来自kotlin gitlive-firebase库....删除这个.

Firebase.firestore.settings = firestoreSettings {
        }

可能会在他们的 github 项目中询问为什么会发生这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.