उपयोगकर्ता बनाना
Firebase प्रोजेक्ट में नया उपयोगकर्ता चार तरीकों से बनाया जा सकता है:
createUserWithEmailAndPassword()
वाले तरीके को कॉल करें.- किसी उपयोगकर्ता को पहली बार साइन इन करने के लिए, फ़ेडरेटेड आइडेंटिटी प्रोवाइडर का इस्तेमाल करें. जैसे, Google Sign-In, Facebook Login या Apple.
उपयोगकर्ता पेज पर, Firebase कंसोल के पुष्टि करने वाले सेक्शन से भी, पासवर्ड से पुष्टि करने वाले नए उपयोगकर्ता बनाए जा सकते हैं.
किसी उपयोगकर्ता की प्रोफ़ाइल पाना
किसी उपयोगकर्ता की प्रोफ़ाइल की जानकारी पाने के लिए, User
की प्रॉपर्टी इस्तेमाल करें. मौजूदा उपयोगकर्ता को दिखाने वाले User
ऑब्जेक्ट को पाने के तीन तरीके हैं:
authStateChanges
,idTokenChanges
, औरuserChanges
स्ट्रीम: आपके श्रोताओं को मौजूदाUser
मिलेगा. अगर किसी उपयोगकर्ता की पुष्टि नहीं हुई है, तो उन्हेंnull
मिलेगा:FirebaseAuth.instance .authStateChanges() .listen((User? user) { if (user != null) { print(user.uid); } });
जब ऐप्लिकेशन शुरू होता है, तो लोकल स्टोरेज से उपयोगकर्ता के क्रेडेंशियल (अगर कोई हो) वापस लाने के बाद एक इवेंट ट्रिगर होता है. इसका मतलब है कि जब उपयोगकर्ता की स्थिति शुरू होती है, तो आपके लिसनर हमेशा कॉल किए जाते हैं. इसके बाद, जब भी पुष्टि करने की स्थिति में बदलाव होगा, तब अपडेट की गई उपयोगकर्ता की स्थिति के साथ एक नया इवेंट जनरेट होगा.
पुष्टि की स्थिति को सुनकर, ऐसा यूज़र इंटरफ़ेस बनाया जा सकता है जो पुष्टि की स्थिति में होने वाले बदलावों पर प्रतिक्रिया देता है.
authStateChanges().listen(...)
को सीधे तौर पर किसी विजेट के बिल्ड तरीके में न रखें, क्योंकि इससे हर बार फिर से बनाने पर नई सदस्यता बन जाएगी. अगर आपको पुष्टि की स्थिति के हिसाब से यूज़र इंटरफ़ेस (यूआई) को अपडेट करना है, तोStreamBuilder
का इस्तेमाल करें:StreamBuilder<User?>( stream: FirebaseAuth.instance.authStateChanges(), builder: (BuildContext context, AsyncSnapshot<User?> snapshot) { if (snapshot.hasError) { return const Text('Something went wrong'); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text("Loading..."); } if (!snapshot.hasData) { return const SignInScreen(); } final user = snapshot.data!; return HomeScreen(userId: 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 सहायता केंद्र में ईमेल टेंप्लेट देखें.
पुष्टि करने वाला ईमेल भेजते समय, जारी रखने के यूआरएल के ज़रिए भी स्थिति को पास किया जा सकता है, ताकि उपयोगकर्ता को वापस ऐप्लिकेशन पर रीडायरेक्ट किया जा सके.
इसके अलावा, ईमेल भेजने से पहले Auth इंस्टेंस पर भाषा कोड अपडेट करके, पुष्टि करने वाले ईमेल को स्थानीय भाषा में भेजा जा सकता है. उदाहरण के लिए:
await FirebaseAuth.instance.setLanguageCode("fr");
await user?.sendEmailVerification();
किसी उपयोगकर्ता का पासवर्ड सेट करना
updatePassword()
तरीके का इस्तेमाल करके, किसी उपयोगकर्ता का पासवर्ड सेट किया जा सकता है. उदाहरण के लिए:
await user?.updatePassword(newPassword);
पासवर्ड रीसेट करने का ईमेल भेजना
sendPasswordResetEmail()
तरीके का इस्तेमाल करके, किसी उपयोगकर्ता को पासवर्ड रीसेट करने का ईमेल भेजा जा सकता है. उदाहरण के लिए:
await FirebaseAuth.instance
.sendPasswordResetEmail(email: "user@example.com");
Firebase कंसोल के पुष्टि करने वाले सेक्शन में इस्तेमाल किए जाने वाले ईमेल टेंप्लेट को, ईमेल टेंप्लेट पेज पर जाकर पसंद के मुताबिक बनाया जा सकता है. Firebase सहायता केंद्र में ईमेल टेंप्लेट देखें.
पासवर्ड रीसेट करने का ईमेल भेजते समय, ऐप्लिकेशन पर वापस रीडायरेक्ट करने के लिए, जारी रखने के यूआरएल के ज़रिए भी स्थिति को पास किया जा सकता है.
इसके अलावा, ईमेल भेजने से पहले Auth इंस्टेंस पर भाषा कोड अपडेट करके, पासवर्ड रीसेट करने वाले ईमेल को स्थानीय भाषा में बदला जा सकता है. उदाहरण के लिए:
await FirebaseAuth.instance.setLanguageCode("fr");
Firebase कंसोल से भी, पासवर्ड रीसेट करने के ईमेल भेजे जा सकते हैं.
किसी उपयोगकर्ता को मिटाना
delete()
तरीके का इस्तेमाल करके, किसी उपयोगकर्ता खाते को मिटाया जा सकता है. उदाहरण के लिए:
await user?.delete();
उपयोगकर्ताओं को Firebase कंसोल के पुष्टि करने वाले सेक्शन से भी मिटाया जा सकता है. इसके लिए, उपयोगकर्ताओं के पेज पर जाएं.
किसी उपयोगकर्ता की फिर से पुष्टि करना
सुरक्षा से जुड़ी कुछ संवेदनशील कार्रवाइयों के लिए, यह ज़रूरी है कि उपयोगकर्ता ने हाल ही में साइन इन किया हो. जैसे, खाता मिटाना, मुख्य ईमेल पता सेट करना, और पासवर्ड बदलना. अगर इनमें से कोई कार्रवाई की जाती है और उपयोगकर्ता ने बहुत पहले साइन इन किया था, तो कार्रवाई पूरी नहीं होगी. साथ ही, FirebaseAuthException
कोड requires-recent-login
के साथ दिखेगा.
ऐसा होने पर, उपयोगकर्ता से साइन इन करने के नए क्रेडेंशियल लेकर उसकी फिर से पुष्टि करें. इसके बाद, उन क्रेडेंशियल को 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