Я создаю приложения на iOS и Android с использованием Firebase auth, и мне сложно с этим справиться. Это моя функция, чтобы проверить, находится ли UID пользователя в белом списке в моей базе данных. После того, как эта функция вызывается в viewDidLoad(_:)
, она выйдет из инструкции охраны, а затем выйдет из функции без ввода блока завершения.Firebase для мобильных пользователей не может вернуть белый список
func checkUserAgainstDatabase(completion: (success: Bool) -> Void) {
guard let currentUser = FIRAuth.auth()?.currentUser else { return }
FirebaseController.ref.child("users").observeSingleEventOfType(.Value, withBlock: { (data) in
// This is where the function exits and the program continues running.
let uid = data.childSnapshotForPath(currentUser.uid)
if uid.exists() {
completion(success: true)
} else {
completion(success: false)
currentUser.deleteWithCompletion(nil)
}
})
}
Вот вызов в viewDidLoad(_:)
:
UserController.shared.checkUserAgainstDatabase { (success) -> Void in
if !success {
self.showLoginSignUpView()
}
}
Вот мои правила в базе данных:
{
"rules": {
".read": true,
".write": true
}
}
Заранее спасибо!