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

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

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

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

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

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

उपयोगकर्ता की प्रोफ़ाइल जानकारी प्राप्त करने के लिए, 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 प्रॉपर्टी: यदि आप सुनिश्चित हैं कि उपयोगकर्ता वर्तमान में साइन-इन है, तो आप User को currentUser प्रॉपर्टी से एक्सेस कर सकते हैं:

    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;
    }
}

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

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

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();

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

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

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

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

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

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

await user?.updatePassword(newPassword);

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

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

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

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

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

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

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

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

एक उपयोगकर्ता हटाएं

आप delete() मेथड से यूजर अकाउंट को डिलीट कर सकते हैं। उदाहरण के लिए:

await user?.delete();

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

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

कुछ सुरक्षा-संवेदनशील कार्रवाइयां—जैसे खाता हटाना , प्राथमिक ईमेल पता सेट करना , और पासवर्ड बदलना—के लिए उपयोगकर्ता ने हाल ही में साइन इन किया है। कार्रवाई विफल हो जाती है और कोड 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