official documentationに続いて、Firebaseに新しいオブジェクト(私のOrder
クラスのインスタンス)を保存して、私に新しいキーを作成したいと思います。これは私がやっていることです:AndroidでFirebaseで新しいオブジェクトを作成する
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference orders = database.getReference("orders");
orders.push().setValue(order);
しかし、何もコンソールから表示されません。あらかじめorders
キーを作成する必要がありますか?空のキーが有効でないと思われるので、コンソールから手動で作成することはできません。次のように
Order
クラスは次のとおりです。
public class Order {
private final ArrayList<OrderItem> orderItems = new ArrayList<>();
public ArrayList<OrderItem> getOrderItems() {
return orderItems;
}
public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
}
}
編集コメントに基づいて
、私は私が手にエラーがチェック:
Permission denied
をしかし、私のアクセスルールは以下のとおりです。
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
したがって、規則はusers
キーにのみ適用され、orders
には適用されません。他のキーについては、デフォルトルールが適用されます。
デフォルトルールでは認証が必要です。彼らはあなたのアプリの認証されたユーザーに完全な読み書きアクセスを許可します。
私のユーザーは認証されていますが、私の場合はこれがなぜ機能しないのですか?ユーザーが正しく認証されるようにするにはどうすればよいですか?いずれの場合においても
へのアクセスルールを変更:
{
"rules": {
"orders": {
".read": "auth != null",
".write": "auth != null"
},
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
して問題を解決していません。
あなたの[セキュリティリスクes](https://firebase.google.com/docs/database/security/)にアクセスを許可するように設定されていますか?デフォルトのルールでは、認証されたユーザーのみがアクセスできます。 –
これが問題であるかどうかを検出するには、完了リスナーを 'setValue()'呼び出しに追加してください。 [Androidに値を書き込むときのエラーを検出する](http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database#t=201608190142309558745)を参照してください。たとえば、 –
@ qbix私はデフォルトのセキュリティルールを使用していますが、ユーザーは認証されています。 – manfcas