Firebase-获取用户时权限被拒绝

时间:2018-08-29 11:00:28

标签: swift firebase firebase-realtime-database firebase-security-rules

我的代码:

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"
    }
}

我在哪里弄错了?

1 个答案:

答案 0 :(得分:0)

您登录了吗?您必须先使用类似的方法登录;

FirebaseAuth.getInstance().signInWithEmailAndPassword

FirebaseAuth.getInstance().signInAnonymously

或任何其他登录方法。

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

{
  "rules": {

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

您可以在配置客户端后更改规则。但是请始终考虑规则并根据规则创建表。

相关问题