अपने ऐप्लिकेशन को Firebase से कनेक्ट करना
अगर आपने अब तक Flutter के लिए Firebase SDK टूल इंस्टॉल और शुरू नहीं किए हैं, तो ऐसा करें.
अपने ऐप्लिकेशन में Firebase Authentication जोड़ना
प्लगिन इंस्टॉल करने के लिए, अपने Flutter प्रोजेक्ट के रूट से यह कमांड चलाएं:
flutter pub add firebase_authयह प्रोसेस पूरी होने के बाद, अपने Flutter ऐप्लिकेशन को फिर से बनाएं:
flutter runअपने डार्ट कोड में प्लगिन इंपोर्ट करें:
import 'package:firebase_auth/firebase_auth.dart';
प्रमाणीकरण सेवा देने वाली कंपनी का इस्तेमाल करने के लिए, आपको इसे Firebase कंसोल में चालू करना होगा. इसके लिए, सुरक्षा > प्रमाणीकरण > साइन-इन करने का तरीका टैब पर जाएं. आपके पास ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू करने का विकल्प होता है. साथ ही, आपके पास पहचान की पुष्टि करने वाली कई अन्य सेवाओं को चालू करने का विकल्प भी होता है.
(ज़रूरी नहीं) Firebase Local Emulator Suite की मदद से प्रोटोटाइप बनाना और उसकी जांच करना
इससे पहले कि हम यह बताएं कि आपका ऐप्लिकेशन उपयोगकर्ताओं की पुष्टि कैसे करता है, आइए हम आपको कुछ ऐसे टूल के बारे में बताते हैं जिनका इस्तेमाल, पुष्टि करने की सुविधा का प्रोटोटाइप बनाने और उसे टेस्ट करने के लिए किया जा सकता है: Firebase Local Emulator Suite. अगर आपको पुष्टि करने के तरीकों और सेवा देने वाली कंपनियों में से किसी एक को चुनना है, पुष्टि करने और Firebase के सुरक्षा नियमों का इस्तेमाल करके सार्वजनिक और निजी डेटा के साथ अलग-अलग डेटा मॉडल आज़माने हैं या साइन-इन यूज़र इंटरफ़ेस (यूआई) डिज़ाइन का प्रोटोटाइप बनाना है, तो लाइव सेवाओं को डिप्लॉय किए बिना स्थानीय तौर पर काम करना एक अच्छा विकल्प हो सकता है.
Authentication Emulator, Local Emulator Suite का हिस्सा है. इसकी मदद से, आपका ऐप्लिकेशन, एम्युलेट किए गए डेटाबेस के कॉन्टेंट और कॉन्फ़िगरेशन के साथ इंटरैक्ट कर सकता है. साथ ही, यह एम्युलेट किए गए प्रोजेक्ट के संसाधनों (फ़ंक्शन, अन्य डेटाबेस, और सुरक्षा नियम) के साथ भी इंटरैक्ट कर सकता है.
पुष्टि करने वाले एम्युलेटर का इस्तेमाल करने के लिए, ये चरण पूरे करें:
एम्युलेटर से कनेक्ट करने के लिए, अपने ऐप्लिकेशन की टेस्ट कॉन्फ़िगरेशन में कोड की एक लाइन जोड़ना.
अपनी लोकल प्रोजेक्ट डायरेक्ट्री की रूट से,
firebase emulators:startको चलाकर.इंटरैक्टिव प्रोटोटाइपिंग के लिए, Local Emulator Suite के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करना या बिना इंटरैक्टिव टेस्टिंग के लिए, Authentication Emulator के REST API का इस्तेमाल करना.
एम्युलेटर का पता और पोर्ट तय करने के लिए,
useAuthEmulator()को कॉल करें:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन को पुष्टि करने वाले एम्युलेटर से कनेक्ट करना लेख पढ़ें. ज़्यादा जानकारी के लिए, Local Emulator Suite के बारे में जानकारी देखें.
अब हम उपयोगकर्ताओं की पुष्टि करने के तरीके के बारे में जानते हैं.
पुष्टि की मौजूदा स्थिति देखना
Firebase Auth, कई तरीके और यूटिलिटी उपलब्ध कराता है. इनकी मदद से, अपने नए या मौजूदा Flutter ऐप्लिकेशन में सुरक्षित तरीके से पुष्टि करने की सुविधा को इंटिग्रेट किया जा सकता है. कई मामलों में, आपको अपने उपयोगकर्ता की पुष्टि करने की स्थिति के बारे में जानने की ज़रूरत होगी. जैसे, वे लॉग इन हैं या लॉग आउट.
Firebase Auth की मदद से, 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) का इस्तेमाल करके, अब भी हर Auth इंस्टेंस के लिए परसिस्टेंस को अपडेट किया जा सकता है.
// 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);
अगले चरण
जिन पहचान और पुष्टि करने वाली सेवाओं के साथ काम किया जा सकता है उनकी मदद से, उपयोगकर्ताओं को साइन इन और साइन अप करने के बारे में गाइड देखें.