Theory
Firebase Auth की Cast
Login code लिखने से पहले, Firebase Authentication के main players जानना helps, क्योंकि आप जो भी auth feature build करते हैं उसमें वही कुछ classes दिखती हैं।
चार जानने के लिए हैं: FirebaseAuth (वह service जिसे आप call करते हैं), FirebaseUser (signed-in user), provider classes (कौन सा sign-in method), और AuthUI (एक ready-made sign-in screen)। यह lesson हर एक और ये कैसे साथ fit होते हैं introduce करता है, तो आगे आने वाले detailed auth lessons easily पढ़ें। Cast सीखिए, और plot simple है।
At a glance
| Class | Role |
|---|---|
| FirebaseAuth | Authentication service जिसे आप call करते हैं (sign in/out, current user पाना) |
| FirebaseUser | Signed-in user represent करता है (uid, email, display name) |
| Provider Classes | Sign-in method identify करते हैं: EmailAuthProvider, GoogleAuthProvider, FacebookAuthProvider |
| AuthUI (FirebaseUI) | एक prebuilt, drop-in sign-in screen जो multiple providers support करती है |
Theory
FirebaseAuth और FirebaseUser
FirebaseAuth इसका heart है: वह instance जिसके through आप users को sign in करते हैं, sign out करते हैं, और check करते हैं कौन signed in है। आप इसे Firebase.auth (या FirebaseAuth.getInstance()) से पाते हैं।
FirebaseUser currently signed-in person को represent करता है, उनकी unique uid, email, और display name जैसी details carry करते हुए। आप इसे auth.currentUser से reach करते हैं, जो null होता है जब कोई signed in नहीं है। वह single check, currentUser null है या नहीं, यही तरीका है आपकी app जानती है login screen दिखाना है या main app। FirebaseAuth service है; FirebaseUser इसे इस्तेमाल कर रहा person है।
Practical
FirebaseAuth और Current User
val auth = Firebase.auth // the FirebaseAuth service
val user = auth.currentUser // FirebaseUser, or null
if (user != null) {
println("Signed in as ${user.email} (uid ${user.uid})")
} else {
println("Not signed in - show the login screen")
}
auth.signOut() // sign the user outFormula
Providers Method Name करते हैं; AuthUI एक Ready Screen Offer करता है
Provider classes बताते हैं कोई कैसे sign in करता है। EmailAuthProvider email और password है; GoogleAuthProvider Google Sign-In है; FacebookAuthProvider Facebook है। हर एक अपने method के लिए credential supply करता है, जिसे आप फिर FirebaseAuth को hand करते हैं।
AuthUI, FirebaseUI library से, अलग है: यह एक ready-made sign-in screen है जो पहले से जानती है आपने enable किए किसी भी providers को कैसे दिखाना और handle करना है, तो आपको लगभग कोई UI code के बिना एक working login flow मिलती है। तो आपके पास एक choice है: AuthUI की prebuilt screen इस्तेमाल कीजिए, या directly FirebaseAuth को एक provider और अपने UI के साथ call कीजिए, वही choice जो अगले दो lessons explore करते हैं।
Quiz
Firebase Authentication में, जब कोई signed in नहीं है auth.currentUser क्या return करता है?
- एक empty FirebaseAuth object
- null, यह indicate करते हुए कि currently कोई user signed in नहीं है (नहीं तो यह एक FirebaseUser होता)
- जो भी last user कभी signed in हुआ था
- एक error जो app crash कर देती है
Show the answer
null, यह indicate करते हुए कि currently कोई user signed in नहीं है (नहीं तो यह एक FirebaseUser होता)
auth.currentUser signed-in FirebaseUser return करता है, या null जब कोई signed in नहीं है, तो एक null check ही है जो app decide करती है login screen दिखाना है या main content। Option A classes को confuse करता है: currentUser एक FirebaseUser है (user), एक FirebaseAuth (service) नहीं, और यह absent होने पर null है, कोई 'empty' service object नहीं। Option C wrong है: एक बार sign out होने पर, currentUser null होता है, यह previous user की तरह linger नहीं करता। Option D wrong है: currentUser पढ़ना crash नहीं होता; null return करना 'not signed in' signal करने का normal, expected तरीका है। Sign-in state जानने के लिए currentUser को null के लिए check कीजिए।
Think first
Provider को FirebaseAuth से Alag क्यों रखें?
Firebase हर sign-in method को directly FirebaseAuth में bake करने की बजाय separate provider classes क्यों इस्तेमाल करता है? फिर tap कीजिए।
Show the answer
क्योंकि identity prove करने के METHOD (provider) को authentication manage करने वाली SERVICE (FirebaseAuth) से separate रखना design को flexible और extensible रखता है, एक service बिना change हुए कई sign-in methods support कर सकती है। सोचिए क्या VARY करता है और क्या SAME रहता है। जो VARIES करता है वह है user कैसे prove करता है वे कौन हैं: email और password, एक Google account, एक Facebook account, एक phone number, हर एक का अपना flow है और अपनी तरह का credential produce करता है। जो SAME रहता है वह बाकी सब है: एक बार identity prove हो जाए, app के पास एक signed-in FirebaseUser है, currentUser check करता है, sign out होता है, वगैरह, यह सब FirebaseAuth handle करती है चाहे user कैसे भी sign in हुआ हो। हर method को एक separate PROVIDER की तरह model करके जो एक credential yield करता है, और FirebaseAuth को कोई भी credential accept करने देकर, Firebase इन concerns को cleanly separate करता है। इसका मतलब है एक नई sign-in method (मान लीजिए, phone या Apple) add करना बस एक और provider है; इसे FirebaseAuth या currentUser इस्तेमाल करने वाला code फिर से लिखने की ज़रूरत नहीं। इसका मतलब यह भी है आपकी app कई sign-in options offer कर सकती है जो सभी same FirebaseUser और same downstream logic में funnel होती हैं। यह एक stable interface (auth service और इसका user) को interchangeable strategies (providers) से separate करने का एक classic application है, वही design thinking जो आपने कहीं और देखी है, और यही वजह है Firebase sign-in methods की एक growing list इतनी smoothly support कर सकता है। कई तरीके अंदर आने के, एक consistent signed-in user।
Summary
Key takeaways
- Firebase Authentication कुछ classes के around centre करता है जो हर auth feature के across दिखती हैं।
- FirebaseAuth वह service है जिसे आप call करते हैं (sign in/out, current user check); इसे Firebase.auth से पाइए।
- FirebaseUser signed-in user represent करता है (uid, email, display name); auth.currentUser null है अगर कोई signed in नहीं है।
- Provider classes sign-in method name करते हैं: EmailAuthProvider, GoogleAuthProvider, FacebookAuthProvider।
- AuthUI (FirebaseUI से) एक prebuilt, drop-in sign-in screen है जो multiple providers support करती है।
- आप AuthUI की ready screen इस्तेमाल कर सकते हैं या directly FirebaseAuth को एक provider और अपने UI के साथ call कर सकते हैं।
- Memory hook: FirebaseAuth service, FirebaseUser user, providers methods, AuthUI ready-made screen।