Flutter पर Firebase Authentication का इस्तेमाल शुरू करना

अपने ऐप्लिकेशन को Firebase से कनेक्ट करना

अगर आपने अब तक Flutter के लिए Firebase SDK टूल इंस्टॉल और चालू नहीं किए हैं, तो उन्हें इंस्टॉल और चालू करें.

अपने ऐप्लिकेशन में Firebase से पुष्टि करने की सुविधा जोड़ना

  1. प्लग-इन इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट के रूट में जाकर यह कमांड चलाएं:

    flutter pub add firebase_auth
    
  2. कमांड पूरी होने के बाद, अपने Flutter ऐप्लिकेशन को फिर से बनाएं:

    flutter run
    
  3. अपने Dart कोड में प्लग-इन इंपोर्ट करें:

    import 'package:firebase_auth/firebase_auth.dart';
    

पुष्टि करने की सुविधा देने वाली किसी कंपनी का इस्तेमाल करने के लिए, आपको Firebase कंसोल में उसकी सुविधा चालू करनी होगी. अपने ऐप्लिकेशन के लिए, ईमेल/पासवर्ड से साइन-इन करने की सुविधा और पुष्टि करने की सुविधा देने वाली अन्य कंपनियों की सुविधा चालू करने के लिए, Firebase कंसोल में पुष्टि करने की सुविधा वाले सेक्शन में जाकर, साइन-इन करने का तरीका पेज पर जाएं.

(ज़रूरी नहीं) Firebase Local Emulator Suite की मदद से प्रोटोटाइप बनाना और टेस्ट करना

इससे पहले कि हम यह बताएं कि आपका ऐप्लिकेशन, उपयोगकर्ताओं की पुष्टि कैसे करता है, आइए हम आपको टूल के एक सेट के बारे में बताते हैं. इसका इस्तेमाल, पुष्टि करने की सुविधा का प्रोटोटाइप बनाने और उसे टेस्ट करने के लिए किया जा सकता है. यह सेट है: Firebase Local Emulator Suite. अगर पुष्टि करने की तकनीकों और पुष्टि करने की सुविधा देने वाली कंपनियों के बारे में फ़ैसला लिया जा रहा है, पुष्टि करने की सुविधा और Firebase सुरक्षा नियमों का इस्तेमाल करके सार्वजनिक और निजी डेटा के साथ अलग-अलग डेटा मॉडल आज़माए जा रहे हैं या साइन-इन करने के यूज़र इंटरफ़ेस (यूआई) के डिज़ाइन का प्रोटोटाइप बनाया जा रहा है, तो लाइव सेवाओं को डिप्लॉय किए बिना स्थानीय तौर पर काम करना एक अच्छा विकल्प हो सकता है.

पुष्टि करने की सुविधा का एम्युलेटर, Local Emulator Suite का हिस्सा है. इसकी मदद से, आपका ऐप्लिकेशन, एम्युलेट किए गए डेटाबेस के कॉन्टेंट और कॉन्फ़िगरेशन के साथ-साथ, एम्युलेट किए गए प्रोजेक्ट के संसाधनों (फ़ंक्शन, अन्य डेटाबेस, और सुरक्षा नियम) के साथ इंटरैक्ट कर सकता है. हालांकि, यह ज़रूरी नहीं है.

पुष्टि करने की सुविधा के एम्युलेटर का इस्तेमाल करने के लिए, आपको बस कुछ चरण पूरे करने होंगे:

  1. एम्युलेटर से कनेक्ट करने के लिए, अपने ऐप्लिकेशन के टेस्ट कॉन्फ़िगरेशन में कोड की एक लाइन जोड़ना.

  2. अपने स्थानीय प्रोजेक्ट डायरेक्ट्री के रूट से, firebase emulators:start चलाना.

  3. इंटरैक्टिव प्रोटोटाइप बनाने के लिए, Local Emulator Suite के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करना या बिना इंटरैक्टिव टेस्टिंग के लिए, पुष्टि करने की सुविधा के एम्युलेटर के REST एपीआई का इस्तेमाल करना.

  4. एम्युलेटर का पता और पोर्ट तय करने के लिए, useAuthEmulator() को कॉल करना:

    Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp();
    
    // Ideal time to initialize
    await FirebaseAuth.instance.useAuthEmulator('localhost', 9099);
    //...
    }
    

ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन को पुष्टि करने की सुविधा के एम्युलेटर से कनेक्ट करना लेख पढ़ें. ज़्यादा जानकारी के लिए, Local Emulator Suite की खास जानकारी देखें.

अब हम उपयोगकर्ताओं की पुष्टि करने के तरीके के बारे में बात करते हैं.

पुष्टि करने की मौजूदा स्थिति देखना

Firebase से पुष्टि करने की सुविधा, आपको अपने नए या मौजूदा Flutter ऐप्लिकेशन में सुरक्षित तरीके से पुष्टि करने की सुविधा इंटिग्रेट करने के लिए, कई तरीके और यूटिलिटी उपलब्ध कराती है. कई मामलों में, आपको अपने उपयोगकर्ता की पुष्टि करने की स्थिति के बारे में जानने की ज़रूरत होगी. जैसे, उन्होंने लॉग इन किया है या लॉग आउट किया है.

Firebase से पुष्टि करने की सुविधा, आपको Stream के ज़रिए रीयल टाइम में इस स्थिति की सदस्यता लेने की सुविधा देती है. कॉल करने के बाद, स्ट्रीम उपयोगकर्ता की पुष्टि करने की मौजूदा स्थिति का तुरंत इवेंट उपलब्ध कराती है. इसके बाद, पुष्टि करने की स्थिति में बदलाव होने पर, स्ट्रीम इवेंट उपलब्ध कराती है.

पुष्टि करने की स्थिति में होने वाले बदलावों को सुनने के तीन तरीके हैं:

authStateChanges()

इन बदलावों की सदस्यता लेने के लिए, अपने FirebaseAuth इंस्टेंस पर authStateChanges() तरीके को कॉल करें:

FirebaseAuth.instance
  .authStateChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

ये इवेंट तब ट्रिगर होते हैं, जब:

  • लिसनर रजिस्टर होने के तुरंत बाद.
  • जब कोई उपयोगकर्ता साइन इन करता है.
  • जब मौजूदा उपयोगकर्ता साइन आउट करता है.

idTokenChanges()

इन बदलावों की सदस्यता लेने के लिए, अपने FirebaseAuth इंस्टेंस पर idTokenChanges() तरीके को कॉल करें:

FirebaseAuth.instance
  .idTokenChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

ये इवेंट तब ट्रिगर होते हैं, जब:

  • लिसनर रजिस्टर होने के तुरंत बाद.
  • जब कोई उपयोगकर्ता साइन इन करता है.
  • जब मौजूदा उपयोगकर्ता साइन आउट करता है.
  • जब मौजूदा उपयोगकर्ता के टोकन में कोई बदलाव होता है.

userChanges()

इन बदलावों की सदस्यता लेने के लिए, अपने FirebaseAuth इंस्टेंस पर userChanges() तरीके को कॉल करें:

FirebaseAuth.instance
  .userChanges()
  .listen((User? user) {
    if (user == null) {
      print('User is currently signed out!');
    } else {
      print('User is signed in!');
    }
  });

ये इवेंट तब ट्रिगर होते हैं, जब:

  • लिसनर रजिस्टर होने के तुरंत बाद.
  • जब कोई उपयोगकर्ता साइन इन करता है.
  • जब मौजूदा उपयोगकर्ता साइन आउट करता है.
  • जब मौजूदा उपयोगकर्ता के टोकन में कोई बदलाव होता है.
  • FirebaseAuth.instance.currentUser के ये तरीके कॉल किए जाते हैं:
    • reload()
    • unlink()
    • updateEmail()
    • updatePassword()
    • updatePhoneNumber()
    • updateProfile()

पुष्टि करने की स्थिति को सेव करना

सभी प्लैटफ़ॉर्म के लिए Firebase SDK टूल, यह पक्का करने के लिए आउट ऑफ़ द बॉक्स सहायता उपलब्ध कराते हैं कि ऐप्लिकेशन को रीस्टार्ट करने या पेज को फिर से लोड करने पर भी, उपयोगकर्ता की पुष्टि करने की स्थिति सेव रहे.

Android और iOS जैसे नेटिव प्लैटफ़ॉर्म पर, इस व्यवहार को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, ऐप्लिकेशन को रीस्टार्ट करने पर भी, उपयोगकर्ता की पुष्टि करने की स्थिति डिवाइस पर सेव रहेगी. उपयोगकर्ता, डिवाइस की सेटिंग का इस्तेमाल करके, ऐप्लिकेशन का कैश किया गया डेटा मिटा सकता है. इससे सेव की गई मौजूदा स्थिति मिट जाएगी.

वेब प्लैटफ़ॉर्म पर, उपयोगकर्ता की पुष्टि करने की स्थिति IndexedDB में सेव होती है. डेटा को लोकल स्टोरेज में सेव करने के लिए, परसिस्टेंस को बदला जा सकता है Persistence.LOCALका इस्तेमाल करके. ज़रूरत पड़ने पर, इस डिफ़ॉल्ट व्यवहार को बदला जा सकता है, ताकि पुष्टि करने की स्थिति सिर्फ़ मौजूदा सेशन के लिए सेव रहे या बिल्कुल भी सेव न हो. इन सेटिंग को कॉन्फ़िगर करने के लिए, FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.LOCAL); तरीके को कॉल करें. setPersistence(Persistence.NONE) का इस्तेमाल करके, पुष्टि करने की सुविधा के हर इंस्टेंस के लिए, परसिस्टेंस को अब भी अपडेट किया जा सकता है.

// Disable persistence on web platforms. Must be called on initialization:
final auth = FirebaseAuth.instanceFor(app: Firebase.app(), persistence: Persistence.NONE);
// To change it after initialization, use `setPersistence()`:
await auth.setPersistence(Persistence.LOCAL);

अगले चरण

पुष्टि करने की सुविधा देने वाली कंपनियों और पुष्टि करने की सेवाओं की मदद से, उपयोगकर्ताओं को साइन इन और साइन अप कराने के बारे में गाइड पढ़ें.