2015-07-30 2 views
4

Так я строй этого приложения в стриже, который имеет данные, которые должны быть прочитаны перед входом пользователя вSwift:. Firebase разрешения на чтение отказано

Чтобы обезопасить его от чтения из из моего приложения, я мириться основное правило безопасности:

".read": "auth != null" 

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

func application(application: UIApplication, willFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { 

    let ref = Firebase(url: "<my firebase url>") 

    ref.observeAuthEventWithBlock({ authData in 
     if authData != nil { 
      segueToListViewController() 
     } 
    }) 
    return true 
} 

Но когда я добираюсь до такой точки, иногда firebase дает мне «разрешениеотрицал "ошибку, иногда это не так.

Я уверен, что есть вошедший пользователь, потому что я все регистрации:

  • Войти изменен
  • Пользователь вошел в AuthData Facebook:
  • applicationDidBecomeActive
  • Loaded ListViewController
  • Загрузка Данные
  • Ошибка: Ошибка домена = com.firebase Код = 1 «Отказано в разрешении»

Так почему же Firebase иногда отказывает в чтении, когда пользователь вошел в систему?

+0

Что нить вы о том, когда блок пробегов? Вы можете установить точку останова или использовать 'NSThread.isMainThread()' – BaseZen

+0

Я пробовал это, попробовал обернуть вызов блока в 'dispatch_async (dispatch_get_main_queue(), {})' и попытался очистить всех возможных слушателей, которые существовали в этой точке без успех. Кажется, что-то в памяти разрушает его. –

ответ

2

Я очень опаздываю на эту вечеринку, но это может помочь, если вы поместите правило .read на один уровень выше, прямо под именем ребенка.

Например

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null && auth.uid == $uid", 
     ".write": "auth != null && auth.uid == $uid" 
     } 
    }, 
    "child": { 
     ".read": "auth != null", 
     ".write": "auth != null", 
     "$child": { 
     } 
    } 
    } 
} 
Смежные вопросы