Не могу отобразить данные пользователя из базы данных Firebase - PullRequest
0 голосов
/ 27 августа 2018

Моему приложению удалось загрузить данные из базы данных Firebase, но теперь я не могу их отобразить. Я предполагаю, что это связано с обновлением Firebase. Я смог получить доступ к данным, вызвав .child ("users"). Child ((currentUser? .Uid)!). Child ("userDetails"), а мой currentUser - Auth.auth (). CurrentUser. Изменился ли метод? Как приложение iOS может считывать данные из Firebase?

enter image description here

override func viewDidLoad() {
    super.viewDidLoad()
    let currentUser = Auth.auth().currentUser
    if currentUser == nil {
        self.showMessage(messageToDisplay: "Could not read user details")
        return
    }

    print("User id = \(String(describing: currentUser?.uid))")
    print("User email \(String(describing: currentUser?.email))")
    print("Is email verified \(String(describing: currentUser?.isEmailVerified))")

    var databaseReference:DatabaseReference!
    databaseReference = Database.database().reference()

    databaseReference.child("users").child((currentUser?.uid)!).child("userDetails").observeSingleEvent(of: DataEventType.value) { (snapshot) in

        let userDetailsData = snapshot.value as? NSDictionary
        let firstName = userDetailsData?["firstName"] as? String ?? ""
        let lastName = userDetailsData?["lastName"] as? String ?? ""

        self.fullNameLabel.text = self.fullNameLabel.text! + " " + firstName + " " + lastName
    }

}

Я получаю следующие ошибки:

Слушатель в / users / (userID пропущен) / userDetails не выполнен: license_denied TIC TCP Conn Failed [9: 0x604000169e40]: 1:61 Ошибка (61) Ошибка загрузки HTTP (код ошибки: -1004 [1:61]) Задание выполнено с ошибкой - код: -1004 Обнаружена ошибка сети. Код, ошибка: -1004, ошибка домена = NSURLErrorDomain код = -1004 «Не удалось подключиться к серверу».

1 Ответ

0 голосов
/ 28 августа 2018

По умолчанию база данных в проекте Firebase доступна только аутентифицированным пользователям:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Таким образом, для отображения пользовательских данных вам нужно либо изменить правила, чтобы разрешить пользователям, не прошедшим проверку подлинности:

{
  "rules": {
    "users": {
      ".read": true,
      ".write": true
    }
  }
}

Или аутентифицировать пользователей перед попыткой доступа к пользовательским данным:

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
  if error == nil {
    // Success!
  } else {
    // Sign in failed
  }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...