Theory
તમારી પાસે પહેલેથી છે એ ખાતાથી log in કરો
વપરાશકર્તાઓ પાસે વધુ એક નવો password ઘડાવવો એ અડચણ છે; ઘણા તો એ ઝંઝટમાં પડતા જ નથી. Google Sign-In એ અડચણ દૂર કરે છે: વપરાશકર્તાઓ FestConnect માં પોતાના હાલના Google ખાતાથી log in કરે છે, અને નવાં credentials બનાવવાને બદલે ફક્ત tap કરીને ખાતું પસંદ કરે છે.
આ federated authentication છે, એટલે કે વપરાશકર્તા પોતાની ઓળખ Google સામે સાબિત કરે છે, અને Firebase એના પર ભરોસો કરે છે. આ પાઠ એ પ્રવાહ બતાવે છે અને એમાં આવતો એક નવો વિચાર પણ: Google ના token ના બદલામાં Firebase નું credential મેળવવું. આ એ જ રીત છે જે તમે Facebook અને બીજા providers માટે પણ વાપરવાના છો, એટલે એને અહીં એક વાર બરાબર શીખી લો.
Theory
Federated પ્રવાહ
Google Sign-In થોડાં પગલાંમાં ચાલે છે:
1. App Google sign-in નો પ્રવાહ શરૂ કરે છે.
2. વપરાશકર્તા પોતાનું Google ખાતું પસંદ કરે છે (અને પહેલી વાર હોય તો મંજૂરી આપે છે).
3. Google Google ID token પાછો આપે છે, જે એ પુરાવો છે કે Google એ આ વપરાશકર્તાને પ્રમાણિત કર્યો છે.
4. App એ token ને GoogleAuthProvider.getCredential(idToken, null) વડે Firebase નું credential બનાવે છે.
5. auth.signInWithCredential(credential) બોલાવો, અને Firebase વપરાશકર્તાને sign in કરી દે છે.
એ પછી વપરાશકર્તા સામાન્ય FirebaseUser જ છે (currentUser ગોઠવાઈ જાય છે), બરાબર email અને password વાળા કિસ્સાની જેમ, ફક્ત પ્રમાણીકરણ Google દ્વારા થયું હોય છે. પહેલાં તમારે Firebase console માં Google ને provider તરીકે ચાલુ પણ કરવું પડે છે.
Practical
Google નો token આપીને Firebase નું sign-in મેળવવું
// After the Google sign-in flow returns a Google ID token:
val credential = GoogleAuthProvider.getCredential(idToken, null)
Firebase.auth.signInWithCredential(credential)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val user = Firebase.auth.currentUser // signed in via Google
} else {
// handle task.exception
}
}
// The user never created a password for your app; Google vouched for them.Formula
Token માંથી credential બનાવવાની રીત
દરેક federated sign-in નું હૃદય એક જ છે: provider (Google) વપરાશકર્તાને પ્રમાણિત કરે છે અને તમને token આપે છે; તમે એ token ને Firebase નું credential બનાવો છો અને signInWithCredential બોલાવો છો.
Google માટે એ GoogleAuthProvider.getCredential(...) છે; Facebook માટે (હવે પછીના પાઠમાં) એ FacebookAuthProvider.getCredential(...) હશે. બાકીનું બધું, એટલે કે signInWithCredential અને એમાંથી મળતો FirebaseUser, એકસરખું જ રહે છે. એટલે 'provider પાસેથી token લો, અને એના બદલામાં Firebase નું credential મેળવો' એટલું સમજાય, પછી બધાં federated logins સમજાઈ ગયાં. આ સહિયારા આકારને લીધે જ Firebase અનેક providers ને સ્વચ્છ રીતે ટેકો આપી શકે છે.
Quiz
Firebase સાથેના Google Sign-In માં app ને મળેલા Google ID token નું તમે શું કરો છો?
- એને વપરાશકર્તાના password તરીકે સાચવો છો
- એને Firebase નું credential બનાવો છો (GoogleAuthProvider.getCredential) અને વપરાશકર્તાને Firebase માં sign in કરાવવા signInWithCredential બોલાવો છો
- એને વપરાશકર્તાને email કરો છો
- એને અવગણો છો; Firebase ને એની જરૂર નથી
Show the answer
એને Firebase નું credential બનાવો છો (GoogleAuthProvider.getCredential) અને વપરાશકર્તાને Firebase માં sign in કરાવવા signInWithCredential બોલાવો છો
Google ID token એ પુરાવો છે કે Google એ વપરાશકર્તાને પ્રમાણિત કર્યો છે; તમે એને GoogleAuthProvider.getCredential(idToken, null) વડે Firebase નું credential બનાવો છો અને એ auth.signInWithCredential(...) ને આપો છો, જે વપરાશકર્તાને Firebase માં sign in કરાવે છે. વિકલ્પ A ખોટો છે: token સાચવવા જેવો password નથી; એ તો ઓળખનો એક વખતનો પુરાવો છે, જેના બદલામાં Firebase નું sign-in મળે છે. વિકલ્પ C નો કશો અર્થ નથી; token code માં વપરાય છે, email માં નહીં. વિકલ્પ D ખોટો છે: federated sign-in પૂરું કરવા Firebase ને બરાબર એ જ token જોઈએ છે, અને એને અવગણો તો વપરાશકર્તા કદી sign in થાય જ નહીં. રીત આ રહી: provider નો token, પછી Firebase નું credential, પછી signInWithCredential.
Think first
વપરાશકર્તા પાસે password બનાવડાવવાને બદલે Google થી sign in કેમ કરાવવું?
Google જેવા federated sign-in થી વપરાશકર્તાઓને અને developers ને શું મળે છે? વિચારીને પછી tap કરો.
Show the answer
બંને પક્ષને સગવડ અને સલામતી મળે છે, કારણ કે વપરાશકર્તા વધુ એક password બનાવીને સાચવવાને બદલે પોતાની પાસે પહેલેથી હોય એવું ભરોસાપાત્ર ખાતું ફરી વાપરે છે.
વપરાશકર્તા માટે: નોંધણી એટલે ફક્ત Google ખાતું પસંદ કરવાનું એક tap, નવો password ઘડવાનો નહીં, યાદ રાખવાનો નહીં, પછીથી ફરી ગોઠવવાનો પણ નહીં, અને એથી શરૂ કરવાની અડચણ ખૂબ ઘટે છે (નવું ખાતું માગતી નોંધણી ઘણા લોકો અધૂરી છોડી દે છે). વળી એ પોતાનાં credentials સાચવવા બાબતે Google પર ભરોસો કરે છે, અને Google ની રક્ષાઓ (જેમ કે મજબૂત passwords અને two-factor authentication) એમને તમારા app પર મફતમાં મળે છે.
Developer અને app માટે: તમે વપરાશકર્તાનો password કદી સંભાળતા કે સાચવતા જ નથી, Google એમને પ્રમાણિત કરે છે અને એમની બાંયધરી આપે છે, એટલે તંત્રમાં સાચવવા જેવું એક નાજુક credential ઓછું થાય છે, અને હુમલાની એક સપાટી પણ ઓછી થાય છે. ઉપરાંત provider પાસેથી ભરોસાપાત્ર profile ની માહિતી (ચકાસાયેલો email, નામ) પણ મળી રહે છે.
સામે પક્ષે: તમે provider પર આધાર રાખો છો, અને કેટલાક વપરાશકર્તાઓને પોતાનાં ખાતાં જોડવાં ગમતાં નથી, અને એટલે જ apps સામાન્ય રીતે federated વિકલ્પો (Google, Facebook) અને સાદો email તથા password, બંને આપે છે અને દરેક વપરાશકર્તાને પસંદ કરવા દે છે.
Federated sign-in એટલા માટે જ લોકપ્રિય છે કે એ શરૂઆતને લગભગ મહેનત વગરની બનાવે છે અને સાથે સલામતી પણ સુધારે છે, જે વિરલ ગણાય એવો બંને પક્ષે લાભ છે; અને એટલે જ આધુનિક apps માં 'Sign in with Google' આપવું એ પ્રમાણભૂત રિવાજ છે. ભરોસાપાત્ર ઓળખ ફરી વાપરો: વપરાશકર્તાઓ માટે સહેલું, અને તમારા માટે વધુ સલામત.
Summary
Key takeaways
- Google Sign-In એ federated authentication છે: વપરાશકર્તા હાલના Google ખાતાથી log in કરે છે, app માંના password થી નહીં.
- પ્રવાહ: Google sign-in શરૂ કરો, વપરાશકર્તા ખાતું પસંદ કરે, અને તમને Google ID token મળે.
- એ token ને GoogleAuthProvider.getCredential(idToken, null) વડે Firebase નું credential બનાવો.
- auth.signInWithCredential(credential) બોલાવો; સફળ થાય એટલે વપરાશકર્તા સામાન્ય FirebaseUser જ છે.
- પહેલાં Firebase console માં Google ને provider તરીકે ચાલુ કરો.
- Token માંથી credential બનાવવાની આ રીત બધા federated providers માટે એકસરખી છે (Facebook એ જ રીતે FacebookAuthProvider વાપરે છે).
- યાદ રાખવાની કડી: provider token આપે, એના બદલામાં Firebase નું credential લો, અને signInWithCredential બોલાવો.