Firebase App Authentication Android - Easily add sign-in to your Android app with FirebaseUI

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello Munir hawk and you were watching ended up development tutorial in cotton and today our topic is firebase authentication which basically means user logging and sign up procedures in an app before starting our tutorial I would like to show you what app we are going to build today so this is our app we can see for login options here sign in with email sign in with Facebook sign in with phone and sign in with Google so first of all I will select Google sign in with Google and here we see some options so I will select this user this Google account and we unlocked in with the Google account the name of the Google account the email and the this time the professor is firebase google.com so we log out and we will log in with sign in with Facebook and yes this is my so I this is my facebook profile picture this is my facebook profile name and this is the email id linked with Facebook and the property is firebase facebook.com we log out and we can log in with the phone number also and here we give my phone number and verify phone number email will be sent and he may very patient code is automatically granted to here and I am locked in with phone number 5 s phone and here is my phone number I log out and then I can login sign in with email and get email address like okay and I press next I need to give a name and I will provide the password in this case my pastor is one two three four five six seven and save and this is my name my email and the stand up provider login provider is password and we do log log out so these four options is working fine before jumping into the code I will show you one interesting thing that if I go here this is our app sample app and we click here and this is our project my firebase this is our project and if we go to the authentication section we can see these those users and those providers I just created and shown in the app so enough talk without no more talking we will jump into the tutorial and their speed app so I'm gonna open the project and add all those dependency for firebase if you don't know how to add firebase to your posit please watch my previous tutorial where I have briefly explained how to add fibers to your project I have already done this so I will directly go to add the authentication deleted dependencies here so I will go to the dependency and the bill got curdled and add some dependency related to firebase authentication I already have it in here so I'll simply copy a stitch here so I little explain what are those dependencies are what those dependencies are this is firebase UI auth which provides the UI for UI for those login so basically this long this activity I haven't created it explicitly it is created by firebase UI auth and this is firebase Earth which is the core of firebase authentication and this line I have added it for Facebook authentication actually Facebook adding Facebook authentication in our project is really very complex and if you really want it you can add Facebook authentication otherwise I actually don't like Facebook authentication because it really really really complex and sometimes it for no reason sometimes it makes app crashes so please carefully watch how to add Facebook authentication in my project one more thing we will enable data binding here so data binding binding in my world and okay one more thing we will go to the project level in that cradle and here we will add math and central knowledge Center and where's the sink now so while it our posit is sinking enabled a little mistake has been made so in so I think I have made a mistake here so data binding I should add it outside the build script here and try again this time I hopefully think it will work so while the at thinking is going on we will go to the our console and do something that is all it is our that app in which app we are working here this is the same app same up here so we will go to the authentication of authentication click authentication and go to sign-in method and here we will enable the email password another sustainable here we will not enable the email link this that is a different thing and save and we will also enable the phone and our phone and save and we will also enable Google and save now you can give a email address here project support email so therefore this detail for this account I really give it keep my email at is here and save and say sorry okay and we will go to the Facebook and Anibal Facebook but enabling Facebook we we will for enabling Facebook we need to do some more tasks so we will go to directly to develop at facebook.com developer developers dot facebook.com I'll go to my apps and your your developer developers of facebook.com may appear something different but don't worry create a app and display name I will give it a name like firebase sample and create app ID and has been created now we need to enable this facebook login add a product that this is a product facebook login we need to set it up let's press setup select Android and with yeah it's saying that download the Facebook SDK for Android don't do that believe me don't do that and press next and it is saying that implementation of we already have done it in our app in your Gradle file we already have done it and by the way this is the this is the dependency for showing circular image so don't worry about it and we're saying don't you don't need that and press next and it's been saying that tell us about your project the package name that is saying that what is your package name so I will go to the manifest file and get the package name from here and also it is asking for default activity class name so default activity class normally again go to the manifest file and we say that our default activities main activity how you can know what is the main what is the your default activity default activity is like we get the intent filter here and it has been saying that our reaction is made so main activity is our default activity we copy it actually first we need to we need to give the full specified path so we need to kept copy the first project name and then we will go to the main activity right place a dot and give it a name so alpacas name dot main activity these are default activity class name press save are saying that Google Play package name just ignore it use this package name Priscilla to use this package name and this is the part where most of the beginner do the mistake they will just believe in his book and do the mistake again and again don't do that just follow my advice so it is saying that we need to add a hash key which one is release - key and one is debug hash key so in our project we will further add debug debug key so don't just follow their follow the instruction we have a different hat please carefully watch it how what we are doing so to generate the hash key we will do a different approach we will go to the Android studio and this we will write one thing you already have written it so don't worry you will get this code - video description you can just copy it here from here and yes outside on create methods and this is basically this generate a B key it will generate the Facebook hash key for us and we will only generate a call this function once in once in the lifetime of this project so please don't worry about it and please don't bother much about it just copy it and I run this project so we will first remove those errors so it is the alternator and an alternator love is for I don't take any of these so don't worry about this obsolete or duplicated duplicated variables so don't worry much about it and I will call it from in oncreate so gate so generally generate a D key and run as it is showing that if the key will come to the log so press run so as the application has been run so we will go to the lock at look at and copy the key hash key hash and give it a search and we got the hash for the forward Facebook dependency so we will copy it and we will simply paste it here and save and press Continue and we we do not need to enable this just press next and we need to do those we need to do some work here in values to these things is single we will copy this code got copied and go back to our resource file sorry resource values strings and copy it here and watch carefully here we normally the normal or the first timer or beginner to the mistake again just do one thing just copy this Facebook app ID again and place it here and say Facebook application do this don't see me why I don't ask me why please do this and it will save a lot of time from you otherwise you will get some runtime error so let's do this okay and we need to do one one more thing we need to copy here copied this thing first one to copy yes the users permission copy and go back to and it is to do and open manifest file and then it the manifest tag and at this permission again go back to develop a store facebook.com/ and copy those theme application ID and something like that just copy to entertain in manifest file beneath the activity main activity spaced it okay and we are basically done press next and we do we can omit those steps we will copy the app ID here the space and copy go back to our five a sample of fibers and in our Facebook here we will place the app ID and we need one more thing the app secret for app secret we will go back to developers dot facebook.com and go back to settings these settings not not these settings these settings press here and press basic and this is where there is a absolute hidden so we'll press show and to show this obsolete you need to login again to your Facebook account copy it and press it play paste it in insert this text box obsolete and finally set so we are basically done in the Far West console virus console authentication here we enabled the email password phone Google and finally the Facebook okay we will go back to our code we will add an activity named login activity where all this login happens although the logging you I will be provided by far base 81 so go to Java package and here we will create new and it will be activity which will be empty activity name it login activity and finish and the login activity will continue okay it contests nothing ok now go back to your login activity dot Katie and here we will do certain things first of all we will initiate the login or the UI firebase author Y so how can we do it we first create a function that is on create login UI and inside we will create the UI and what UI is actually builder type class builder class so we will those we will first create those providers while to my eaters equals making a list every list of of a list of say or you i dot IDP config I defeat IDP config is there is that this is the firebase UI what evil IDP config which is there is a there is a method for creating email builder Facebook builder Facebook plug-in builder and so on so this IDP config and we will first create google builder dot build this is a function we will build a dot build and oh another one is basically I will copy paste and here I will use home builder home builder and this is Facebook builder and lastly email builder okay fine I'll give you lose it oh oh as their function okay so basically okay it is saying that you need to tie it is a speaking type okay I will give a type of you I thought it's oddity config now now what I will do I will do oh this is a function right I will create a start activity so if you don't know what is start activity start activity for result sorry a start activity for result stat activity result is same like starting in another activity but it has a key and it will it is it will expect a result from other activity so we will we will start activity of OT why this earth a why it is faulty way and we will expect some something from returning from Ottawa so how can I do it so I will write as auth UI this is a build attack class so RT y and we get a get in stance and get in stance and dot create signing intend builder dot don't set available set available providers and it needs a parameter of available poverty this is there are other available providers listed here and and one more thing we will also [Music] disable the smart lock because it is a knowing set smart lock it is a smart lock cannibal and we will also make it false and we place built ok and we need one more parameter this this is the this is actually the activity and we need one more parameter which is basically in number okay so one number we can do one little leap actually a theme which is we will add company an object an object company by the way if you don't know what is component object it is actually something similar like static keyword in Java because Cortland doesn't have that static variable constant it is in Kotlin we call it company an object simply call it component object so so we will add variable and its private constant well name it a or C sign just a constant variable declarant variable because we need to give some value when you start we do start activity for result so and this is our C sign so what you are doing we are actually do we will call a stat activity for result or launching for and no we are saying there we are so doing we are directing redirecting the control to the Ottawa and we also expecting some result from the ey get instance now we will get the result we'll take the result for the result we will use on at T VT result and we can see some parameters like request code integer well this request code is same request code we have used to send we have used to redirect to the other activity in our case the RC sign in the same request hood and this is result code there are different kind of result code like result activity result ok or result cancel or wrong result and the data or the data itself get is some intent flag okay now when I do one thing this if our request code request code is our C signing because we want to make sure that the same request code is has been using so our sis I mean and inside it we will take the response for response because the IDP expands IDP a strong start from result intent it's the data we will take this response now we will check another thing that if result code is if result code equals result okay this is there is activity result of activity dot there are different in many kinds of result actually we will will intercept in result okay if the result is okay we will we will get then firebase ought there is a class named firebase ought it will and we will get the result from the fire with auth far with auth class so that is the far we say okay sleep well user equals firebase ought not get in a stance dot current user so what this learn do if the result code is okay and then the firebase author will be initiated we using the get instance and we will get the current either okay now now we can do one more thing when I when I get the result we want to we want to actually send we want to start the activity of negativity for this we can do you can you can do that start activity and intent intent there's a these dis activity and Wilson Center main activity dot main activity and cluster Java okay so when I get the result okay and get the user we will simply return to main activity okay now if anything happen otherwise the result is not okay then what I will do then we add as some condition the else else if response null response response the response to the response response I call smalls not then we will simply return and return okay because it and we will finish the will close that we will not return to the main active or anywhere else we'll finish and close return okay if you finish a do not really make the return that was a data if I've eaten it will be unnecessary now if if the response the response have some arrow like response dot get response that gate arrow I think there is a function don't get arrow what mistake I made I sponsored to get a row okay okay okay so the response might be now also we make it in a level so response dot arrow and I think will be a record area it'll put your code equal to if there is no internet or if the internet lost in the way so we get error codes don't know network no network then you can add some your logic here I simply will return and if the if any unknown a rule happens we will show it text message test post message so it will be if Oh let me copy paste it I do not need to write again and again all the time and it response code is like anything unknown happen unknown arrow we will return and people return we will show a toast message to the user a toast the net text and it will be this context and will simply show the arrow to the user so code make it twisting twisting and it gets short show so let me recap the whole thing again okay one more thing we need to call this to our concrete method okay okay so what we are doing here we are doing we are finalists of all we are calling this function and this function we create a UI with the help of Ottawa and do one more thing startactivityforresult and it will send back to the firebase auth with a with a with a signal and when the activity result the the distinction activity came back with a result we will check the result and if the result is okay the we will get the firebase earth will be instantiated and we will get the current user from and we will get all this information from the user and if anything wrong happened we will simply terminate this app now actually we are ready to check the project so we can do one more thing for the user we will we can take a log so log dot D and we will write user data and simply if there we want to get the username only this time so user dot say the display names there's some property display name email phone number profit ready and many more so we will simply take the username disciplining oh okay we will make it a null set because it may be not so we make it blossom okay before run one more thing we will like to add we will like to tell this code to a real device because it is really tough to take everything like everything in big especially the clog in part in our emulators so please run it in your physical device okay so I give it a run so we got an arrow and the basically says you know the part of Facebook basically it is says that it is saying that solution to add to sleep place and this will just copy it go sleepless value just copied and we go to our manifest opposed manifest file and just paste it paste it there paste it inside inside the meta tag yes the meat attack where the Facebook application ID is there so instead meta tag okay and all true actor okay now we again run this project and I think hopefully it will run well one more thing if we don't do that actually our app will not be meaningful so we go to the main activity that Katie and okay first thing first we will disable we will just comment it out and [Music] enter function we will like to comment it out you can either delete it also now okay we will add data binding first so I'm a data binding lover okay so binding which is type of the okay I forgot to add data binding here first activity mean we go here and and the layout by the way if you don't know how determined worse I have a full video tutorial a playlist for data binding and somewhere in my channel please find it and learn what is data binding and this data binding is excellent thing that gives releases that actually release our pressure to do writing the find d-y idea gained by and again and it has many more futures please please learn it and it will get you will get definitely it benefited okay so I will copy it just cut it okay they still insert layout and Google to main activity and it will be something like activity mean bonding DVT means binding and binding it was data binding YouTube going D util dot set continue and we need context this is the discussed what is talking now okay we will do one thing that II okay we take one more variable so Val the ought which will be okay a lot so it is firebase ought don't get instance dot current user okay we are basically will basically check if this if it is null because it will be the same thing will be instead initiated from login activity from the login activity and inside the main activity if it is not then we will send it back to the back to our login activity so how can I do it I can do it from here that if odd equals non then they simply start activity intent and this and we I I will lead at it to login activity so login activity cluster Jana okay and else I will so that I will show the username so first I need to either the name or something like that activity me and I will say to give it a little bigger text size text size will be maybe 24s be and give it ID ID because ID 60 me so as the test name will be text name don't text will be the odd odd this is a lot don't display me okay now we can simply run our app to here so this is our app and I'm showing it from my physical device so if I press the sign-in with Google we can see that the login activity here and if I press the sign-in with Google here and there's been signing in taking some time and I will sign it with my this account and now it is showing the name of our my account name you can simply take it from you go okay I will show it later because as I am showing it from my device and there's how it's working okay one more thing I need to do to make this app more more meaningful to add a login button first okay we will add a logout button so go to the main activity XML file and go to the design section go to the people and there is nothing so I will take some tools don't text that name is some even any name little okay so that we can see it from our from our app or from our design so I add simply add a button on your button here and the button for this button I will add some constraint the battle but we will have constrain to the constant to the actually button to the left and to the right and I will give it some margin and it will have 32 and it will have 16 in right and left and upper duel gate it will get 16 okay okay okay done now we will add a state button bTW sorry button love out logout and it will be the up content okay everything is done here taste let me lock out move out okay and we go back to our main activity and we will write some code for this cyclic listener so I will write the set one click listener for the button and get bottom name is you must be but okay right inside the one kid method so they turn logout dot set on click listener and to be a lambda function so instead listen inside it we will write a 2 I so what you I our authentication provider and getting instance and sign out and you need to context this and we also want to implement one of its one of its method like add on success listener if the if the user can successfully locked out we will a masses that is toast God make taste this and it will be mm you were successfully locked out then short and so so one another thing I can do and it is inside outside won't get method that we eat the user the user pays back button when he is locked in because we want to we do not want to send him back to the login activity that will be awkward so I will use finish affinity so to use the to use the actually property of back button we will overwrite the on back press so on back first and if you don't back first I just finish the affinity so it will simply cause to finish this project who needs this app okay well one thing I forgot to do because when the user click the Save button to logout button I will redirect the user to login activity so for this start activity intent intent this and go to the login activity login activity class dojo okay so I what I next thing what I do I will run this app to my physical device and see what happened okay run it to my physical device so I am running this app from my physical device and if I sign in with and now I am trying signing with email and write an email that 50 money and next give a name say I mean give a password in case of 1 2 3 4 5 6 and save and it is showing the name of Ron and swing the log out and if I place the logout button it will simply redirect me to the login activity so this is the app we can take one interesting thing that if I go to the authentication of project and the tabs user and we get some user already using our app that is this user and we also logged in with email this is a provider and we also locked in with Facebook so these are the user of our app so this is the admin panel we can see which user using our app and now we go back to Android studio and one thing is left to make our app prettier so there's so we will go to the activity main.xml and here we add some we simply will go to the text and yeah we will add the circular image field and for the soccer game if you already added the library circle circle image okay you add this circle circle image view and it will be 100 DB her height and hundred DB width and source okay I did to do one thing okay before I did the circle image we need to add some troubles so we will go to we will right click down the red folder and show in Explorer and go to the list and create a new folder called create a new folder called mm drawable no DPI draw no DPI no DPI and copy/paste some images I'll give those image link to the video description please download the images from the link like copy/paste here is no detail list here and go back to the Android studio and I will simply say the source source will be profile pic there's nice little profile pic you can see from the preview and what else oh I can do I will make it fit Center skeleton skeleton it was Food Center and give it ID ID will be ID user in is enduring age and we can pretty much close it now as it is showing that it is constantly out and we had to make the constraint so we will go to the design section and drag it to here we will add the constraint to the constraint to the right Const into the later part of the light right and also made a constraint with the name property actually and and we will add some margin 16:16 and we will have it like eight and we simply check this text into here okay on this constraint okay now we will add some make make this make this a username little more prettier so the text size will be twenty s P and what else you can do let me check so we will change the text color to black and just color girls black zero and we make it the center for isn't all the gravity Center by the way you can do all those things from the design table so it is your choice whether you use the design from the design tab or desktop this is up on your chest so one thing we can do alternatively do another thing we can first delete the grid the textview and make another taste so we keep the same name yeah the name was maybe txt my school name and it is filling that peter it and okay we make a margin so before you take madam we will make the constant so the constant will go to with the bottom of here and left side constrain and the right side constrain and we will make some margin to the top margin only 8 or 16 and right margin at 16 this margin is 16 and this this will be also 8 okay no the idea is the layout width will be match constraint just 0 TP and we will solve the gravity gravity gravity will be sorry gravity will be center horizontal to the test view the gravity will be okay Center sort people is until it is not central the center horizontal okay so it will come to a middle position and also we will set the big size text size the size will be make it to NTSB okay now it has constantly lived right and we do not need that constraint so if we want to delete any constant just place your control button and left-click to the this position so press ctrl button or left click here and the controller will go here now we will need to add the email the phone number this kind of field so to do that we will need the same stand so for the sister we can copy one thing it will make least I'll so start it so we literally here and and the receptor and start to start refer to an extract this time and we will take some style like the same thing with hide margin start start margin top margin and gravity and textile all will be the same okay we will give a name that text box style okay for a better take we can go to the values and find the styles and we find the same text box style just we have created and we can also manually edit here like we can imagine and we can add 10 dB ok that could be done okay now we'll go back to the main activity xnn and we will create two more or two more activity - more text boxes excuse me then we got here and give it a name ID will be text in e and it will be I don't know you can visit somewhere ok in a and it takes the star and this type will be it will simply give it a style like style style we click that right button because source and here we give you such that text box style we just have created takes time and double click here text box style and we will give a constraint left constrain right constrain and it will constrain to the top so our constant okay now now it will be the textbox style well go here and see what happened to it any web content wrap content we do not use the wrap content anymore because in our style file you already have used it so so we do not need it right here okay now we also will add phone number the phone number here so the text box and text box and simply add style text box style and drag it here get some constrain and we do not need those wrap on tenting take some lighting and we will make it like phone number phone number okay no you need to et me what is the wrong one here okay I'll give it stop okay now okay we we need to give it an ID actually the textview and it will be it will be text form so our basically design is done and we can make this little text color will be white and the design section we can make the background background we make some background like looking for a red color okay so that red color okay basically we are done now we will take those image and change this image to change this image we need to add a dependency library we will use the dependency library of blight so we will first go to the F 4 F dot cradle and can add the and the dependency for the for changing image okay so inside the update Gradle folder abdelkader file we have the dependence for for the glide so we'll copy this to line and paste it and you think now so now we'll go to the main utility and we will create a function for creating the UI and we make the name fun create UI and inside it we will do one thing that we will change this take this year and the next thing is only the same thing okay the same thing okay we got it we do not need this we will delete it and we will make this logic later first we will create the creative eye and we will add we have aught so if the we take the dot null not null and we add the late function here and inside late we will change the UI we will change this value so text name dot text will be it odd dot display name and text any dot text will be I mean and it's phone number the text will be dot phone number okay now we need to change the clap image also to forget the image we will use the glide function here and so it will be Glide so so glide or gentle glide dot wait it and you will be this this actually this week is for glide and and here we will touch load load URI or sting we also ought dot for to sorry for to there is a photo URL okay don't we will add feed center and we will also add the placeholder please placeholder placeholder for that travel so I thought trouble actually that this is the blue placeholder this is that this is the image placeholder image and its name is profile pic so it it will be the placeholder a solid dot profile pic and finally into what into what what is what will be the view to view is itself here that you need is very miss okay so you is you is profile so user as you are using data binding we need to and do not need to write our toward finally what I did was something something we do not need that so we really use user image so what do you need to do so I need to call the fun create um so how I can do it so I will write that either okay I need to first cut it and I want to do if the earth not equal to null then I will create the ey okay TTY and else then I will leader it to the login activity so else I will treat it to the you'd add it to the log activity okay I think that is done and what else we can do we can okay okay one thing we can we have laid that actually if what happen if this is the this will happen in oncreate so same thing that the same interesting we will also call it from the resume because we don't know where when the activity come back and forward so this kind of situation we can use on resume to handle this interacting so on resume in psychology we will copy paste the same thing or equals not creative way and if not null create UI and if it is null then start activity to login activity ok so I will run these to my device and see what happened okay one more thing we can we can make the login you are little more know what so they say little more little more pity or prettier how can I do it first I will add the style at this time so we will go to the Styles and make a style of login ey so you can understand style and make it log give the name login ey style log in UI style and its parent will be permanent I'm inheriting the new action bar so so it will be no action okay AB compact theme of compaction but because I do not want to add any action but there and and I will give it a window background I I'll give it a background I'm gonna limit so so so the I can give it a ten idea and and it will be window window window background for this down window background should be window background background talking I found it in the background and it will be tribal I said it trouble you already have love in the ground this is here log in the ground this I want to use as a log in the ground so I have written it so and we will add style to our login activity so okay we will go back to our login activity and inside the start activity for result we will add that style okay so we will say theme doc said theme it will be that style okay that style you have just greater style dot ordered style dot remain it may be login anyway start and we will also add a at this at this image as sorry and this image as a logo so say we have set low option except logo logo and it will be our dot dot dot low okay now you can run this app tour my physical device and see what happened well unfortunately we got an exception and we go to the locket and see what happened so we go and see this fatal exception mean and it's saying that the binary single line there's a circle circle image it is not working properly or there is a error so equal to them in activities in the South Kelly image p1 with some exchange for some strange reason it is not working so we go and dig down deep down and here is the oncreate and is caused by something a scale to fit Center not supported so a scale Thai food center is not supported ok then I will remove it I don't need it and I will give the build run I run the app again and let's see what happened I am running the app from my device and see you can see the login background has been changed and we are see a little logo on the bottom of the login screen now we can I can simply do a log in with a Google and I will login with this my this Google account and see what happened there and if the the profile pic or the image has been usual image has been changed the name and we can now see the email we can logout and I can do one more thing I would check with sign-in with phone so one more thing you should be should never be too much concerned about sign-in with phone because sign it info with phone sometimes take 24 hours to active and depending on you listen so I am living in a third-world country so it will it may take so much time to active but it will work definitely work so let me take whether it whether it is working or not so and clicking here and give my number and fulfilling phone number take and wait for the SMS come and already is in this grant automatically here here I can copy the code and awesome and for achieve an unfortunate reason it didn't work okay dragging one nine one two one eight eight seven three one the phone number automatically frightened and we got an exception okay let me check how what happened okay and we got the look at and the down go there and they're saying fertile exception fill the delivery result in for something something to activity login activity pintle and need a message okay but it's not be until innocent needy message so what is their role what is the role caused by java.lang null point exception println needs a message okay and it happened in that line on activity result of an activity we click there oh okay as you know when I lo long idiot phone number there is no display name and it is getting exception so I actually don't need this I just simply did it here because we are not nothing we are no we are showing nothing in logging activity everything is showing in mean activity so I do not need this and I give a built again and let's see whether it is working fine or not so I have checked that phone authentication was is working fine I'm not showing it here because the video has already been very long and you can go to the fibers console and give a fair efficiency we have locked in with my phone number already and all those Facebook Google and email and phone numbers are blocked in so what is the output of this tutorial is actually we have learnt very easily that how to add all this social login including Google in a Facebook and even phone repetition in our our firebase application and we will in upcoming details we will do much much things many more things like database storage function and cloud messaging so please stay connected and give a like if you like this video and share if you feel it is helpful it will be helpful for others and I am signing off good night
Info
Channel: Munir Hoque
Views: 4,117
Rating: 4.8933334 out of 5
Keywords: Authenticate user in Android app using Furebase, Sign in with Google in Android using Firebase, Sign in with Facebook in Android using Firebase, generate hash key for Facebook authentication, firebase auth 2020, firebase authentication, firebase authentication tutorial, firebase auth intorduction, what is firebase auth, firebase authentication tutorial 2020, android quiz app tutorial, android quiz app example, android quiz app tutorial kotlin
Id: Jt-Cv-s9AR0
Channel Id: undefined
Length: 79min 23sec (4763 seconds)
Published: Sat Dec 14 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.