2016-03-06 8 views
10

मैंने समझने की कोशिश की है लेकिन यह देखने में सक्षम नहीं है कि लॉगिन के बाद मैं कितना और कहां संग्रहीत कर रहा हूं।फ़ायरबेस - प्रमाणीकरण के बाद प्रति उपयोगकर्ता डेटा लिखने/पढ़ने के लिए

public static final String BASE_URL = "https://xyz.firebaseio.com"; 

Firebase ref = new Firebase(FirebaseUtils.BASE_URL); 
    ref.authWithPassword("[email protected]", "some_password", new Firebase.AuthResultHandler() { 

    @Override 
    public void onAuthenticated(AuthData authData) { 
     Toast.makeText(LoginActivity.this, "Login Successful", Toast.LENGTH_SHORT).show(); 
     startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
    } 
    @Override 
    public void onAuthenticationError(FirebaseError firebaseError) { 
    } 
} 

इस बिंदु पर मैं सफलतापूर्वक प्रमाणीकृत और MainActivity पर उतरा हूँ। MainActivity के onCreate में अगला। मैं प्रारंभ Firebase

firebase = new Firebase(FirebaseUtils.BASE_URL).child("box"); 

// adapter below is an ArrayAdapter feeding ListView 
firebase.addChildEventListener(new ChildEventListener() { 
    @Override 
    public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
     if (dataSnapshot.getValue(Box.class) instanceof Box) 
      adapter.add(dataSnapshot.getValue(Box.class).getName()); 
    } 

    @Override 
    public void onChildChanged(DataSnapshot dataSnapshot, String s) { 
     adapter.remove(dataSnapshot.getValue(Box.class).getName()); 
    } 

    // other callbacks 
} 

एक जोड़ें बटन है कि मैं Firebase के लिए एंड्रॉयड से नए रिकॉर्ड पुश करने के लिए प्रयोग किया जाता है।

final Button button = (Button) findViewById(R.id.addButton); 
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     Box box = new Box("Box " + System.currentTimeMillis(), "Location " + System.currentTimeMillis()); 
     Firebase fbBox = firebase.child("" + System.currentTimeMillis()); 
     fbBox.setValue(box); 
    } 
}); 

लेकिन कोड (कि अद्यतन नहीं है ListView से स्पष्ट) किसी भी रिकॉर्ड नहीं जोड़ता है या कम से कम मैं कहाँ डेटा देखने के लिए पता नहीं हो सकता है इसके बाद के संस्करण। मैंने ब्राउजर में Firebase खोलने की जांच की, लेकिन मुझे यकीन नहीं है कि उपयोगकर्ता विशिष्ट डेटा की जांच कैसे करें?

मैं संशोधित मेरी Firebase Rules

तरह
{ 
    "rules": { 
     "users": { 
     "$uid": { 
      ".write": "auth != null && auth.uid == $uid", 
      ".read": "auth != null && auth.uid == $uid" 
     } 
     } 
    } 
} 

मैं ऐसे https://xyz.firebaseio.com/xxxxxx-xxxxx-xxxx-xxxxx-xxxxxxxxxxxx के रूप में यूआरएल खोलने की कोशिश की, लेकिन यह कोई डेटा प्रदर्शित नहीं होगा।

मैं पर कुछ जानकारी है करना चाहते हैं:

  1. प्रमाणीकरण के बाद उपयोगकर्ता विशिष्ट डेटा कैसे जोड़ें। क्या यह निर्बाध नहीं हो सकता है जब हमारे पास उपयोगकर्ता आधार पर पढ़ने/लिखने पर कोई प्रतिबंध नहीं है, क्योंकि मैं डेटा को आसानी से पढ़/लिख सकता हूं।

  2. क्या कोई Firebase डेटाबेस देखने या जेएसओएन डेटा देखने के लिए वेब दृश्य है, जहां मैं एंड्रॉइड डिवाइस से डेटा को देख/संशोधित कर सकता हूं?

+0

परंपरागत रूप से आपके पास फ़ायरबेस में एक उपयोगकर्ता नोड होगा जहां उपयोगकर्ता डेटा संग्रहीत किया जाएगा। यदि यह एक नया उपयोगकर्ता है, तो आप अपने यूआईडी को उपयोगकर्ता नोड में कुंजी के रूप में जोड़ते हैं और बच्चे कुंजी होंगे: आपके द्वारा स्टोर किए जाने वाले डेटा के मूल्य जोड़े; नाम: "बॉब" स्थान: "फ्लोरिडा" आदि। यदि उपयोगकर्ता प्रमाणीकरण और अस्तित्व में है, तो आप उनके यूआईडी को जानेंगे ताकि आप अपने नोड में/उपयोगकर्ताओं से पढ़ सकें।आपके डेटा के लिए एक फायरबेस वेब दृश्य है, इसे फायरबेस डैशबोर्ड कहा जाता है और फ़ायरबेस वेबसाइट पर आपके खाते में लॉग इन करने के बाद इसे एक्सेस किया जा सकता है। – Jay

+1

मेरे पास एक ही प्रश्न था और इसे हल किया गया: http://stackoverflow.com/questions/35820836/how-to-make-sure-a-user-can-only-see-and-access-their-own-data -इन-फायरबेस –

उत्तर

15

पहले, संशोधित Firstbase नियम:

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".write": "$uid === auth.uid", 
     ".read": "$uid === auth.uid" 
     } 
    } 
    } 
} 

फिर, जावा कोड में:

Firebase rootRef = new Firebase("https://user-account.firebaseio.com/"); 
// Assuming the user is already logged in. 
Firebase userRef = rootRef.child("users/" + rootRef.getAuth().getUid()); 
userRef.child("message1").setValue("Hello World"); 

अंत में, डेटा कुछ इस तरह दिखेगा :

Firebase Data

+0

बहुत बहुत धन्यवाद! यह पूरी तरह से काम करता है! – Mithun

+1

वाह यह एकल एसओ पोस्ट मुझे कम से कम समझाया गया है कि फायरबेस कैसे काम करता है, यह नहीं पता था कि यह एक एसक्यूएल टेबल नहीं है लेकिन पदानुक्रम – Sirens

संबंधित मुद्दे