फायरबेस में उपयोगकर्ताओं को प्रबंधित करें

एक उपयोगकर्ता बनाएं

आप अपने फायरबेस प्रोजेक्ट में चार तरीकों से एक नया उपयोगकर्ता बनाते हैं:

  • createUserWithEmailAndPassword() विधि को कॉल करें।
  • Google साइन-इन, Facebook लॉगिन या Apple जैसे फ़ेडरेटेड पहचान प्रदाता का उपयोग करके किसी उपयोगकर्ता को पहली बार साइन इन करें।

आप उपयोगकर्ता पृष्ठ पर फायरबेस कंसोल के प्रमाणीकरण अनुभाग से नए पासवर्ड-प्रमाणीकृत उपयोगकर्ता भी बना सकते हैं।

उपयोगकर्ता की प्रोफ़ाइल प्राप्त करें

किसी उपयोगकर्ता की प्रोफ़ाइल जानकारी प्राप्त करने के लिए, User के गुणों का उपयोग करें। वर्तमान उपयोगकर्ता का प्रतिनिधित्व करने वाली User वस्तु प्राप्त करने के तीन तरीके हैं:

  • authStateChanges , idTokenChanges और userChanges स्ट्रीम: आपके श्रोताओं को वर्तमान User प्राप्त होगा, या यदि कोई उपयोगकर्ता प्रमाणित नहीं है तो null प्राप्त होगा:

    FirebaseAuth.instance
      .authStateChanges()
      .listen((User? user) {
        if (user != null) {
          print(user.uid);
        }
      });
    

    जब ऐप शुरू होता है, तो स्थानीय स्टोरेज से उपयोगकर्ता क्रेडेंशियल (यदि कोई हो) बहाल होने के बाद एक ईवेंट सक्रिय हो जाता है, जिसका अर्थ है कि उपयोगकर्ता स्थिति शुरू होने पर आपके श्रोताओं को हमेशा कॉल किया जाता है। फिर, जब भी प्रमाणीकरण स्थिति बदलती है, तो अद्यतन उपयोगकर्ता स्थिति के साथ एक नया ईवेंट उठाया जाएगा।

    प्रमाणीकरण स्थिति को सुनकर, आप एक उपयोगकर्ता इंटरफ़ेस बना सकते हैं जो प्रमाणीकरण स्थिति में इन परिवर्तनों पर प्रतिक्रिया करता है।

  • प्रमाणीकरण ( signIn -) विधियों द्वारा लौटाया गया UserCredential ऑब्जेक्ट: UserCredential ऑब्जेक्ट में वर्तमान User के साथ एक user संपत्ति है:

    final userCredential =
        await FirebaseAuth.instance.signInWithCredential(credential);
    final user = userCredential.user;
    print(user?.uid);
    
  • FirebaseAuth उदाहरण की currentUser संपत्ति: यदि आप सुनिश्चित हैं कि उपयोगकर्ता वर्तमान में साइन-इन है, तो आप currentUser संपत्ति से User तक पहुंच सकते हैं:

    if (FirebaseAuth.instance.currentUser != null) {
      print(FirebaseAuth.instance.currentUser?.uid);
    }
    

    currentUser दो कारणों से null हो सकता है:

    • उपयोगकर्ता साइन इन नहीं है.
    • ऑथ ऑब्जेक्ट ने प्रारंभ करना समाप्त नहीं किया है। यदि आप उपयोगकर्ता की साइन-इन स्थिति पर नज़र रखने के लिए श्रोता का उपयोग करते हैं, तो आपको इस मामले को संभालने की आवश्यकता नहीं है।

उपयोगकर्ता की प्रदाता-विशिष्ट प्रोफ़ाइल जानकारी प्राप्त करें

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

if (user != null) {
    for (final providerProfile in user.providerData) {
        // ID of the provider (google.com, apple.com, etc.)
        final provider = providerProfile.providerId;

        // UID specific to the provider
        final uid = providerProfile.uid;

        // Name, email address, and profile photo URL
        final name = providerProfile.displayName;
        final emailAddress = providerProfile.email;
        final profilePhoto = providerProfile.photoURL;
    }
}

उपयोगकर्ता की प्रोफ़ाइल अपडेट करें

आप update विधियों के साथ उपयोगकर्ता की मूल प्रोफ़ाइल जानकारी—उपयोगकर्ता का प्रदर्शन नाम और प्रोफ़ाइल फ़ोटो URL—अद्यतन कर सकते हैं। उदाहरण के लिए:

await user?.updateDisplayName("Jane Q. User");
await user?.updatePhotoURL("https://example.com/jane-q-user/profile.jpg");

उपयोगकर्ता का ईमेल पता सेट करें

आप updateEmail() विधि से उपयोगकर्ता का ईमेल पता सेट कर सकते हैं। उदाहरण के लिए:

await user?.updateEmail("janeq@example.com");

किसी उपयोगकर्ता को सत्यापन ईमेल भेजें

आप sendEmailVerification() विधि से किसी उपयोगकर्ता को पता सत्यापन ईमेल भेज सकते हैं। उदाहरण के लिए:

await user?.sendEmailVerification();

आप ईमेल टेम्प्लेट पेज पर फायरबेस कंसोल के प्रमाणीकरण अनुभाग में उपयोग किए जाने वाले ईमेल टेम्प्लेट को कस्टमाइज़ कर सकते हैं। फायरबेस सहायता केंद्र में ईमेल टेम्पलेट देखें।

सत्यापन ईमेल भेजते समय ऐप पर वापस रीडायरेक्ट करने के लिए जारी यूआरएल के माध्यम से राज्य को पास करना भी संभव है।

इसके अतिरिक्त आप ईमेल भेजने से पहले प्रामाणिक उदाहरण पर भाषा कोड को अपडेट करके सत्यापन ईमेल को स्थानीयकृत कर सकते हैं। उदाहरण के लिए:

await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();

उपयोगकर्ता का पासवर्ड सेट करें

आप updatePassword() विधि से उपयोगकर्ता का पासवर्ड सेट कर सकते हैं। उदाहरण के लिए:

await user?.updatePassword(newPassword);

पासवर्ड रीसेट ईमेल भेजें

आप sendPasswordResetEmail() विधि से किसी उपयोगकर्ता को पासवर्ड रीसेट ईमेल भेज सकते हैं। उदाहरण के लिए:

await FirebaseAuth.instance
    .sendPasswordResetEmail(email: "user@example.com");

आप ईमेल टेम्प्लेट पेज पर फायरबेस कंसोल के प्रमाणीकरण अनुभाग में उपयोग किए जाने वाले ईमेल टेम्प्लेट को कस्टमाइज़ कर सकते हैं। फायरबेस सहायता केंद्र में ईमेल टेम्पलेट देखें।

पासवर्ड रीसेट ईमेल भेजते समय ऐप पर वापस रीडायरेक्ट करने के लिए जारी यूआरएल के माध्यम से राज्य को पास करना भी संभव है।

इसके अतिरिक्त आप ईमेल भेजने से पहले प्रामाणिक उदाहरण पर भाषा कोड को अपडेट करके पासवर्ड रीसेट ईमेल को स्थानीयकृत कर सकते हैं। उदाहरण के लिए:

await FirebaseAuth.instance.setLanguageCode("fr");

आप फायरबेस कंसोल से पासवर्ड रीसेट ईमेल भी भेज सकते हैं।

किसी उपयोगकर्ता को हटाएँ

आप delete() विधि से किसी उपयोगकर्ता खाते को हटा सकते हैं। उदाहरण के लिए:

await user?.delete();

आप उपयोगकर्ता पृष्ठ पर फ़ायरबेस कंसोल के प्रमाणीकरण अनुभाग से भी उपयोगकर्ताओं को हटा सकते हैं।

किसी उपयोगकर्ता को पुनः प्रमाणित करें

कुछ सुरक्षा-संवेदनशील कार्रवाइयां—जैसे खाता हटाना , प्राथमिक ईमेल पता सेट करना और पासवर्ड बदलना —के लिए आवश्यक है कि उपयोगकर्ता ने हाल ही में साइन इन किया हो। यदि आप इनमें से कोई एक क्रिया करते हैं, और उपयोगकर्ता ने बहुत पहले साइन इन किया है, कार्रवाई विफल हो जाती है और requires-recent-login कोड के साथ एक FirebaseAuthException फेंक देता है। जब ऐसा होता है, तो उपयोगकर्ता से नए साइन-इन क्रेडेंशियल प्राप्त करके और क्रेडेंशियल्स को reauthenticate के लिए पास करके उपयोगकर्ता को पुनः प्रमाणित करें। उदाहरण के लिए:

// Prompt the user to re-provide their sign-in credentials.
// Then, use the credentials to reauthenticate:
await user?.reauthenticateWithCredential(credential);

उपयोगकर्ता खाते आयात करें

आप Firebase CLI के auth:import कमांड का उपयोग करके किसी फ़ाइल से उपयोगकर्ता खातों को अपने Firebase प्रोजेक्ट में आयात कर सकते हैं। उदाहरण के लिए:

firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14