Theory
Firebase Authના મુખ્ય players
Login code લખતા પહેલાં Firebase Authenticationના મુખ્ય players જાણવું ઉપયોગી છે, કારણ કે દરેક auth featureમાં આ જ થોડા classes વારંવાર આવે છે.
ચાર વસ્તુઓ યાદ રાખો: FirebaseAuth (તમે call કરો છો તે service), FirebaseUser (signed-in user), provider classes (કઈ sign-in method વપરાય છે) અને AuthUI (ready-made sign-in screen). આ lesson દરેકને અને તેઓ સાથે કેવી રીતે કામ કરે છે તે સમજાવે છે. Cast સમજાઈ જાય તો આગળની auth lessons સરળ વાંચી શકાય છે.
At a glance
| Class | Role |
|---|---|
| FirebaseAuth | તમે call કરો છો તે authentication service: sign in/out અને current user મેળવવા માટે |
| FirebaseUser | Signed-in userનું representation: uid, email અને display name |
| Provider classes | Sign-in method ઓળખાવે છે: EmailAuthProvider, GoogleAuthProvider, FacebookAuthProvider |
| AuthUI (FirebaseUI) | Multiple providers support કરતી prebuilt, drop-in sign-in screen |
Theory
FirebaseAuth અને FirebaseUser
FirebaseAuth મુખ્ય service છે: usersને sign in કરાવવા, sign out કરવા અને કોણ signed in છે તે check કરવા માટે તેનો ઉપયોગ થાય છે. તેને Firebase.auth અથવા FirebaseAuth.getInstance()થી મેળવો.
FirebaseUser હાલમાં signed-in personને represent કરે છે. તેમાં unique uid, email અને display name જેવી details હોય છે. તેને auth.currentUserથી મેળવો. જ્યારે કોઈ signed in ન હોય ત્યારે auth.currentUser null હોય છે. આ simple checkથી app નક્કી કરે છે કે login screen બતાવવી કે main app. FirebaseAuth service છે; FirebaseUser તેનો ઉપયોગ કરતો વ્યક્તિ છે.
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 બતાવે છે; AuthUI ready screen આપે છે
Provider classes બતાવે છે કે user કેવી રીતે sign in કરે છે. EmailAuthProvider email અને password માટે છે; GoogleAuthProvider Google Sign-In માટે છે; FacebookAuthProvider Facebook માટે છે. દરેક provider પોતાની method માટે credential આપે છે, જેને પછી FirebaseAuthને આપવામાં આવે છે.
AuthUI, જે FirebaseUI libraryનો ભાગ છે, અલગ છે: તે ready-made sign-in screen છે. તમે enable કરેલા providersને તે પોતે બતાવી અને handle કરી શકે છે, એટલે લગભગ કોઈ UI code વગર working login flow મળે છે. Choice તમારી છે: AuthUIની prebuilt screen વાપરો અથવા provider અને own UI સાથે FirebaseAuth direct call કરો.
Quiz
Firebase Authenticationમાં કોઈ signed in ન હોય ત્યારે `auth.currentUser` શું return કરે છે?
- Empty FirebaseAuth object
- null, જે બતાવે છે કે કોઈ user હાલમાં signed in નથી; અન્યથા FirebaseUser મળે છે
- છેલ્લે sign in કરેલો user
- App crash કરાવતી error
Show the answer
null, જે બતાવે છે કે કોઈ user હાલમાં signed in નથી; અન્યથા FirebaseUser મળે છે
auth.currentUser signed-in FirebaseUser return કરે છે અથવા કોઈ signed in ન હોય ત્યારે null return કરે છે. તેથી null checkથી app નક્કી કરે છે કે login screen બતાવવી કે main content. Option A classesને confuse કરે છે: currentUser FirebaseUser છે, FirebaseAuth service નહીં, અને user ન હોય ત્યારે empty object નહીં પણ null મળે છે. Option C ખોટું છે: sign out પછી currentUser અગાઉના user તરીકે રહેતો નથી; તે null થાય છે. Option D ખોટું છે: currentUser વાંચવાથી crash થતો નથી; null normal અને expected result છે.
Think first
Providerને FirebaseAuthથી અલગ શા માટે રાખવામાં આવ્યો છે?
દરેક sign-in methodને FirebaseAuthમાં જ મૂકવાને બદલે Firebase અલગ provider classes શા માટે વાપરે છે? પછી tap.
Show the answer
કારણ કે identity prove કરવાની METHOD અને authentication manage કરતી SERVICEને અલગ રાખવાથી design flexible અને extensible બને છે. એક જ FirebaseAuth service ઘણી sign-in methods support કરી શકે છે.
User પોતાની identity કેવી રીતે prove કરે છે તે બદલાય છે: email/password, Google account, Facebook account અથવા phone number, અને દરેકનો flow અને credential અલગ હોઈ શકે છે. પરંતુ identity prove થયા પછી જે વસ્તુઓ same રહે છે તે FirebaseAuth handle કરે છે: signed-in FirebaseUser, currentUser check, sign out અને appનો આગળનો logic.
દરેક methodને અલગ PROVIDER તરીકે model કરીને તે provider credential આપે અને FirebaseAuth કોઈ પણ credential સ્વીકારે છે. તેથી નવી sign-in method, જેમ કે phone અથવા Apple, add કરવા FirebaseAuth rewrite કરવાની જરૂર નથી; માત્ર બીજો provider ઉમેરાય છે. App અનેક sign-in options આપી શકે છે અને બધા રસ્તા એક જ FirebaseUser તથા એક જ downstream logic સુધી પહોંચે છે. ઘણી ways in, one consistent signed-in user.
Summary
Key takeaways
- Firebase Authenticationના દરેક featureમાં થોડા મુખ્ય classes વારંવાર વપરાય છે.
- FirebaseAuth એ sign in/out અને current user check કરવા માટેની service છે; તેને Firebase.authથી મેળવો.
- FirebaseUser signed-in userને represent કરે છે; તેમાં uid, email અને display name જેવી details હોય છે.
- કોઈ signed in ન હોય ત્યારે auth.currentUser null હોય છે.
- Provider classes sign-in method બતાવે છે: EmailAuthProvider, GoogleAuthProvider અને FacebookAuthProvider.
- AuthUI FirebaseUI libraryની prebuilt, drop-in sign-in screen છે, જે multiple providers support કરે છે.
- Memory hook: FirebaseAuth service, FirebaseUser user, providers methods અને AuthUI ready-made screen.