首页 > 解决方案 > Firebase - 获取用户时权限被拒绝

问题描述

我的代码:

import Foundation
import Firebase

class UserService {

    static var currentUserProfile:UserProfile?

    static func observeUserProfile(_ uid:String, completion: @escaping ((_ userProfile:UserProfile?)->())) {
        let userRef = Database.database().reference().child("users/profile/\(uid)")

        userRef.observe(.value, with: { snapshot in
            var userProfile:UserProfile?

            if let dict = snapshot.value as? [String:Any],
                let username = dict["username"] as? String,
                let photoURL = dict["photoURL"] as? String,
                let url = URL(string:photoURL) {

                userProfile = UserProfile(uid: snapshot.key, username: username, photoURL: url)
            }

            completion(userProfile)
        })
    }

}

我的 Firebase 实时数据库规则是:

{
  "rules": {

      ".read": "auth.uid != null",
      ".write": "auth.uid != null"
    }
}

我在哪里弄错了?

标签: swiftfirebasefirebase-realtime-databasefirebase-security

解决方案


你登录了吗?您必须先使用以下方法登录;

FirebaseAuth.getInstance().signInWithEmailAndPassword

或者

FirebaseAuth.getInstance().signInAnonymously

或任何其他登录方法。

我不推荐的其他方式(因为它允许所有人访问) ,如果您想在没有身份验证的情况下使用它,您可以更改规则,例如;

{
  "rules": {

      ".read": true,
      ".write": true
    }
}

您可以在配置客户端后更改规则。但始终考虑规则并根据规则制作表格。


推荐阅读