2017-01-22 5 views
0

Я включил электронную почту (пользовательские) аутентификации в Firebase, я установил следующие правилаНевозможно записать значение в firebase Swift 3

{ 
    "rules": { 
    ".read": "auth == null", //even non-authorised users CAN read 
    ".write": "auth == null" //even non-authorised users CAN write 
    } 
} 

Попытка проверить Firebase используя следующий код

let rootRef = FIRDatabase.database().reference() 
    let playlists = rootRef.child("playlists") 
    playlists.setValue("test") 

Не уверен, что не так, но дает setValue и RemoveValue Permission denied error.

Невозможно понять, что случилось, я новичок в Firebase

+0

try auth === null вместо auth == null. Обратите внимание: если вы сделаете так, авторизованные пользователи не смогут читать или писать. Это то, что вы хотите? Возможно, вы хотели просто сделать «.read»: «true»? –

+0

@Robert да, вы правы, его «.read»: «true» спасибо, добавьте, что в качестве ответа я отмечу это спасибо. –

+0

@Robert: '===' и '==' функционируют точно так же в правилах безопасности Firebase, так что это не изменит ситуацию. Но, действительно, установка «.read»: true' (предпочтительно без кавычек вокруг «истина» - результат один и тот же, но правильное логическое значение более идиоматично) является способом достижения этого, согласно [«общедоступным» правилам в документация] (https://firebase.google.com/docs/database/security/quickstart). –

ответ

1

Вот решение

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

Эти правила позволяют все читать и писать для всей Firebase узла. Хорошо для тестирования, но, пожалуйста, не оставляйте это так, как это абсолютно небезопасно.

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

your_firebase_ref 
    playlists: "test" 

Просто, чтобы вы идете в правильном направлении, здесь обновленный код, который будет создавать новый узел каждый раз, когда он запущен ,

let rootRef = FIRDatabase.database().reference() 
let playlists = rootRef.child("playlists") 
let aNewPlayList = playLists.childByAutoId() 
aNewPlayList.setValue("test") 

, что приведет к

your_firebase_ref 
    playlists 
     -Yius889jsijs: "test" //first time it's run 
     -YUOmsooaosd9: "test" //second time it's run 

-Y .... ключ создается childByAutoId и, как правило, способ создания детских ключей в пределах узла.