5

मैं फ़ायरबेस और एंगुलरजेएस के साथ काम कर रहा हूं। मैं Google लॉगिन के लिए ऑथ प्रमाणीकरण का उपयोग कर रहा हूं और मैंने प्रक्रिया पूरी की है। अब मुझे स्थानीय डेटा जैसे फ़ायरबेस में संग्रहीत उपयोगकर्ता डेटा पुनर्प्राप्त करने की आवश्यकता है: authUser:।फायरबेस, स्थानीय स्टोरेज में संग्रहीत उपयोगकर्ता डेटा को फ़ायरबेस के रूप में पुनर्प्राप्त करें: authUser:

एक बार जब मैं स्थानीय संग्रहण में Google खाते से लॉगिन करता हूं तो आपके पास फायरबेस: ऑथ्यूसर: .created और मुझे इन विवरणों को लाने की आवश्यकता है।

मैं निम्नलिखित विधि का इस्तेमाल किया, उपयोगकर्ता डेटा

firebase.database().ref('users/' + user.uid).set 
({ 
    name: user.displayName, 
    email: user.email, 
    token: token 
}); 

उत्तर

1

स्टोर करने के लिए एक उपयोगकर्ता के प्रोफ़ाइल जानकारी प्राप्त करने के उपयोगकर्ता का एक उदाहरण के गुणों का उपयोग करें। उदाहरण के लिए:

var user = firebase.auth().currentUser; 
var name, email, photoURL, uid; 

    if(user != null) { 
     name = user.displayName; 
     email = user.email; 
     photoUrl = user.photoURL; 
     uid = user.uid; 
    } 

आप कैसे Firebase में उन वेब SDK का उपयोग करने का प्रबंधन करने, इस documentation पर जाएं और जानें करना चाहते हैं तो।

+2

मैं पहले से ही इस की कोशिश की लेकिन यह currentUser के लिए अशक्त लौट आते हैं। लेकिन मुझे स्थानीय स्टोरेज में संग्रहीत डेटा को मुख्य ** फ़ायरबेस के साथ संग्रहीत किया जाता है: authUser: _val _ ** अधिक स्पष्टीकरण के लिए ** कृपया ध्यान दें कि जीमेल प्रमाणीकरण का उपयोग कर रहा हूं और उसके बाद प्राप्त मूल्यों को सहेज रहा हूं ** – Abraham

6

वेब एसडीके के लिए प्रलेखन का उल्लेख नहीं है कि सफलतापूर्वक प्रमाणीकरण पर, फायरबेस स्थानीय स्टोरेज में User ऑब्जेक्ट सेट करता है। एपीआई संदर्भ में इसका उल्लेख नहीं है। मैंने फ़ायरबेस के साथ अपने वू ऐप को कॉन्फ़िगर करने का प्रयास करते समय स्थानीय स्टोरेज की जांच करके ऐसा ही पाया है। ताकि के लिए filter()

संपादित कारण नहीं है

const authUser = Object.keys(window.localStorage) 
    .filter(item => item.startsWith('firebase:authUser'))[0] 

आप localStorage में कई प्रविष्टियाँ हो सकता था: नीचे मेटालिका के जवाब देखें

localStorage से उपयोगकर्ता को पुनः प्राप्त करने के लिए, आप निम्न कार्य कर सकते हैं।


अद्यतन (2018/02/21): ऐसा लगता है वहाँ अब एक वर्ग (Web) Authentication State Persistence है। अगर मैं मूल रूप से अपना उत्तर पोस्ट करता हूं तो यह सुनिश्चित करें कि मैं इस जवाब को लिंक करने के लिए अद्यतन कर रहा हूं क्योंकि इस प्रश्न को मध्यम ध्यान दिया जाता है।

अद्यतन 2 (2018/02/21): Overview of persistence behavior के तहत कहा गया है:

कोई उपयोगकर्ता प्रवेश हो और कोई हठ निर्दिष्ट है, तो डिफ़ॉल्ट सेटिंग (एक ब्राउज़र अनुप्रयोग में local) लागू किया जाएगा ।

तो localStorage डिफ़ॉल्ट जो अपने मूल जवाब की पुष्टि करता है से पहले Firebase जे एस एसडीके खुले sourced था।

6

बस @ फ्रैंकिसो मातेओ के उत्तर को बढ़ाने के लिए: उल्लिखित फ़िल्टरिंग, केवल कुंजी (स्ट्रिंग) देता है जिसके साथ धारावाहिक उपयोगकर्ता ऑब्जेक्ट स्थानीय संग्रहण में संग्रहीत होता है। वास्तविक deserialized उपयोगकर्ता वस्तु प्राप्त करने के लिए, हम स्थानीय भंडारण से इस कुंजी के साथ आइटम पढ़ने की जरूरत है:

const userKey = Object.keys(window.localStorage) 
    .filter(it => it.startsWith('firebase:authUser'))[0]; 
const user = userKey ? JSON.parse(localStorage.getItem(userKey)) : undefined; 
संबंधित मुद्दे