Firebase में उपयोगकर्ताओं को मैनेज करें

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

Firebase प्रोजेक्ट में नया उपयोगकर्ता बनाने के चार तरीके:

उपयोगकर्ता पेज पर, 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 प्रॉपर्टी: अगर आपको पक्के तौर पर पता है कि इस समय उपयोगकर्ता ने साइन-इन किया हुआ है, तो 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- तरीकों की मदद से, उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी, जैसे कि उपयोगकर्ता का डिसप्ले नेम और प्रोफ़ाइल फ़ोटो का यूआरएल अपडेट किया जा सकता है. उदाहरण के लिए:

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 कंसोल के पुष्टि करने वाले सेक्शन में इस्तेमाल किए जाने वाले ईमेल टेंप्लेट को अपनी पसंद के मुताबिक बनाया जा सकता है. Firebase सहायता केंद्र में ईमेल टेंप्लेट देखें.

पुष्टि करने के लिए ईमेल भेजते समय, ऐप्लिकेशन पर वापस रीडायरेक्ट करने के लिए, यूआरएल जारी रखें विकल्प का इस्तेमाल करके, स्थिति को पास किया जा सकता है.

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

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

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

updatePassword() तरीके से उपयोगकर्ता का पासवर्ड सेट किया जा सकता है. उदाहरण के लिए:

await user?.updatePassword(newPassword);

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

sendPasswordResetEmail() तरीके का इस्तेमाल करके, किसी उपयोगकर्ता को पासवर्ड फिर सेट करने का ईमेल भेजा जा सकता है. उदाहरण के लिए:

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

ईमेल टेंप्लेट वाले पेज पर, Firebase कंसोल के पुष्टि करने वाले सेक्शन में इस्तेमाल किए जाने वाले ईमेल टेंप्लेट को अपनी पसंद के मुताबिक बनाया जा सकता है. Firebase सहायता केंद्र में ईमेल टेंप्लेट देखें.

पासवर्ड रीसेट ईमेल भेजते समय ऐप्लिकेशन पर वापस रीडायरेक्ट करने के लिए, यूआरएल जारी रखें के ज़रिए राज्य को पास करना भी मुमकिन है.

इसके अलावा, ईमेल भेजने से पहले, पुष्टि वाले इंस्टेंस पर भाषा कोड को अपडेट करके, पासवर्ड फिर से सेट करने की सुविधा वाले ईमेल को स्थानीय भाषा में बदला जा सकता है. उदाहरण के लिए:

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

आप Firebase कंसोल से भी पासवर्ड रीसेट के ईमेल भेज सकते हैं.

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

आपके पास 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 सीएलआई के auth:import कमांड का इस्तेमाल करके, किसी फ़ाइल से अपने Firebase प्रोजेक्ट में उपयोगकर्ता खातों को इंपोर्ट किया जा सकता है. उदाहरण के लिए:

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