私はFirebaseでプロジェクトを練習しようとしています。ここに私がやっていることがあります。私は電子メール認証を使用しています。人が電子メールとパスワードでサインアップすると、自分の名前を取得し、ユーザーIDでFirebaseデータベースに追加します。ここ は私がFirebaseルール(許可が拒否されました)
{
"rules": {
"users": {
"$uid": {
".read": "auth != null && auth.uid == $uid",
".write": "auth != null && auth.uid == $uid",
"items": {
"$item_id": {
"title": {
".validate": "newData.isString() && newData.val().length > 0"
}
}
},
"user-details":{
"name" : {
".validate" : "newData.isString() && newData.val().length >= 0"
}
}
}
},
"all-public" : {
".read" : "true",
".write" : "true"
}
}
}
を設定し、ここで私が書いたSWIFTのコードであるFirebase内のデータベースです。すべての公共第二子へ
var dbref = FIRDatabase.database().reference()
dbref.child("users").child("\(user?.uid)").child("user-details").child("name").setValue(name)
dbref.child("all-public").child((user!.uid)).setValue(name)
データが正常に追加されますが、それは、上記の最初の子を追加するために失敗し、許可が拒否されたと言います。 コンソールに表示される内容は次のとおりです。
2017-04-09 20:00:02.145 ToDo App[1573] <Warning> [Firebase/Database][I-RDB03812] setValue: or removeValue: at /users/Optional("klvexHq3GOQ4IiWpOs4WP7H4pmy1")/user-details/name failed: permission_denied
2017-04-09 20:00:28.426 ToDo App[1573] <Warning> [Firebase/Database][I-RDB03812] Listener at /users/klvexHq3GOQ4IiWpOs4WP7H4pmy1/items failed: permission_denied
まず私はまだで署名されていないのですので、これはだろうと思った。だから私はすぐにサインアップした後にログインすると、データベースが、それでも同じエラーにデータを追加してみました。 これを手伝ってください。私は本当にここで立ち往生しています。 user
以来
を参照してください、これは私のデータベースのアクセス権の問題ではありませんか?許可が拒否されたと言うので。 –
コードはオプション値をアンラップできないため、データベースは操作を許可しません。エラーメッセージを注意深くチェックすると、ユーザのUIDではなく、 'Optional(" klvexHq3GOQ4IiWpOs4WP7H4pmy1 ")'が含まれていることがわかります。 –