अपने ऐप्लिकेशन को Firebase से कनेक्ट करें
यदि आपने पहले से ऐसा नहीं किया है तो फ़्लटर के लिए फायरबेस एसडीके स्थापित करें और प्रारंभ करें ।
अपने ऐप्लिकेशन में Firebase प्रमाणीकरण जोड़ें
अपने फ़्लटर प्रोजेक्ट की जड़ से, प्लगइन स्थापित करने के लिए निम्न कमांड चलाएँ:
flutter pub add firebase_auth
एक बार पूरा होने के बाद, अपने स्पंदन एप्लिकेशन का पुनर्निर्माण करें:
flutter run
अपने डार्ट कोड में प्लगइन आयात करें:
import 'package:firebase_auth/firebase_auth.dart';
प्रमाणीकरण प्रदाता का उपयोग करने के लिए, आपको इसे Firebase कंसोल में सक्षम करना होगा। ईमेल/पासवर्ड साइन-इन और अपने ऐप के लिए इच्छित अन्य पहचान प्रदाताओं को सक्षम करने के लिए फायरबेस प्रमाणीकरण अनुभाग में साइन-इन विधि पृष्ठ पर जाएं।
(वैकल्पिक) फायरबेस स्थानीय एमुलेटर सूट के साथ प्रोटोटाइप और परीक्षण
आपका ऐप उपयोगकर्ताओं को कैसे प्रमाणित करता है, इस बारे में बात करने से पहले, आइए ऐसे टूल का एक सेट पेश करें जिनका उपयोग आप प्रोटोटाइप और प्रमाणीकरण कार्यक्षमता का परीक्षण करने के लिए कर सकते हैं: फायरबेस लोकल एमुलेटर सूट। यदि आप प्रमाणीकरण तकनीकों और प्रदाताओं के बीच निर्णय ले रहे हैं, तो प्रमाणीकरण और फायरबेस सुरक्षा नियमों का उपयोग करके सार्वजनिक और निजी डेटा के साथ विभिन्न डेटा मॉडल आज़मा रहे हैं, या साइन-इन UI डिज़ाइन का प्रोटोटाइप बना रहे हैं, लाइव सेवाओं को तैनात किए बिना स्थानीय रूप से काम करने में सक्षम होना एक अच्छा विचार हो सकता है। .
एक प्रमाणीकरण एमुलेटर स्थानीय एमुलेटर सूट का हिस्सा है, जो आपके ऐप को एमुलेटेड डेटाबेस सामग्री और कॉन्फ़िगरेशन के साथ-साथ वैकल्पिक रूप से आपके एमुलेटेड प्रोजेक्ट संसाधनों (फ़ंक्शन, अन्य डेटाबेस और सुरक्षा नियम) के साथ इंटरैक्ट करने में सक्षम बनाता है।
प्रमाणीकरण एमुलेटर का उपयोग करने में कुछ ही चरण शामिल हैं:
एमुलेटर से कनेक्ट करने के लिए अपने ऐप के टेस्ट कॉन्फिगर में कोड की एक लाइन जोड़ना।
अपनी स्थानीय परियोजना निर्देशिका की जड़ से,
firebase emulators:start
।इंटरैक्टिव प्रोटोटाइप के लिए स्थानीय एम्यूलेटर सूट यूआई का उपयोग करना, या गैर-संवादात्मक परीक्षण के लिए प्रमाणीकरण एमुलेटर आरईएसटी एपीआई का उपयोग करना।
एमुलेटर पता और पोर्ट निर्दिष्ट करने के लिए
useAuthEmulator()
को कॉल करें:Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // Ideal time to initialize await FirebaseAuth.instance.useAuthEmulator('localhost', 9099); //... }
अपने ऐप को ऑथेंटिकेशन एमुलेटर से कनेक्ट करें पर एक विस्तृत गाइड उपलब्ध है। अधिक जानकारी के लिए, स्थानीय एमुलेटर सूट परिचय देखें।
अब चलिए जारी रखते हैं कि उपयोगकर्ताओं को कैसे प्रमाणित किया जाए।
वर्तमान प्रमाणीकरण स्थिति की जाँच करें
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!');
}
});
निम्नलिखित होने पर ईवेंट निकाल दिए जाते हैं:
- श्रोता के पंजीकृत होने के ठीक बाद।
- जब कोई उपयोगकर्ता साइन इन होता है।
- जब वर्तमान उपयोगकर्ता साइन आउट हो जाता है।
- जब वर्तमान उपयोगकर्ता के टोकन में कोई परिवर्तन होता है।
- कस्टम दावों को संशोधित करने के बाद उपयोगकर्ता साइन इन या पुन: प्रमाणित करता है। परिणामस्वरूप जारी किए गए आईडी टोकन में नवीनतम दावे होंगे।
- एक पुराने टोकन की समय सीमा समाप्त होने के बाद एक मौजूदा उपयोगकर्ता सत्र को अपना आईडी टोकन रीफ्रेश किया जाता है।
-
FirebaseAuth.instance.currentUser.getIdTokenResult(true)
पर कॉल करके एक आईडी टोकन को बलपूर्वक ताज़ा किया जाता है।
अधिक विवरण के लिए, ग्राहक के लिए कस्टम दावों का प्रचार करना देखें
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()
-
idTokenChanges()
, userChanges()
और authStateChanges()
भी सक्रिय नहीं होंगे यदि आप Firebase Admin SDK या Firebase कंसोल के साथ User
को अक्षम या हटाते हैं। आपको FirebaseAuth.instance.currentUser.reload()
का उपयोग करके पुनः लोड करने के लिए बाध्य करना होगा, जो एक user-disabled
या user-not-found
अपवाद का कारण बनेगा जिसे आप अपने ऐप कोड में पकड़ और संभाल सकते हैं।
स्थायी प्रमाणीकरण स्थिति
सभी प्लेटफ़ॉर्म के लिए फायरबेस एसडीके यह सुनिश्चित करने के लिए बॉक्स समर्थन प्रदान करते हैं कि आपके उपयोगकर्ता की प्रमाणीकरण स्थिति ऐप के पुनरारंभ होने या पृष्ठ पुनः लोड होने पर बनी रहती है।
एंड्रॉइड और आईओएस जैसे नेटिव प्लेटफॉर्म पर, यह व्यवहार कॉन्फ़िगर करने योग्य नहीं है और उपयोगकर्ता की प्रमाणीकरण स्थिति ऐप के पुनरारंभ होने के बीच डिवाइस पर बनी रहेगी। उपयोगकर्ता डिवाइस सेटिंग्स का उपयोग करके ऐप्स कैश किए गए डेटा को साफ़ कर सकता है, जो किसी भी मौजूदा स्थिति को संग्रहीत कर देगा।
वेब प्लेटफॉर्म पर, उपयोगकर्ता की प्रमाणीकरण स्थिति 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);
अगले कदम
समर्थित पहचान और प्रमाणीकरण सेवाओं के साथ उपयोगकर्ताओं को साइन इन करने और साइन अप करने के बारे में मार्गदर्शिकाओं का अन्वेषण करें।