उपयोगकर्ता बनाना
नया उपयोगकर्ता बनाने के लिए, आपके पास ये विकल्प हैं:
अपने ऐप्लिकेशन से:
createUserWithEmailAndPassword()तरीके को कॉल करके या फ़ेडरेटेड आइडेंटिटी प्रोवाइडर का इस्तेमाल करके, पहली बार किसी उपयोगकर्ता को साइन इन करके, अपने Firebase प्रोजेक्ट में नया उपयोगकर्ता बनाएं. जैसे, Google साइन-इन, Facebook लॉगिन या 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 console में जाकर भी उपयोगकर्ताओं को मिटाया जा सकता है. इसके लिए, सुरक्षा > पुष्टि > उपयोगकर्ता टैब पर जाएं.
किसी उपयोगकर्ता की फिर से पुष्टि करना
सुरक्षा से जुड़ी कुछ संवेदनशील कार्रवाइयों के लिए, उपयोगकर्ता का हाल ही में साइन इन करना ज़रूरी है. जैसे, खाता मिटाना, मुख्य ईमेल पता सेट करना, और पासवर्ड बदलना. अगर इनमें से कोई कार्रवाई की जाती है और उपयोगकर्ता ने बहुत पहले साइन इन किया था, तो कार्रवाई पूरी नहीं होगी. साथ ही, 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