package Ġcom . ish ank ni jh awan . not ef y . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Account Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Client Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . common . api . ApiException Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . auth . Google Auth Provider Ċ import Ġcom . ish ank ni jh awan . not ef y . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ final _ login .* Ċ Ċ class ĠFinal Login Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġg so : ĠGoogle SignIn Options ĊĠĠĠ Ġval ĠRC _ SIGN _ IN Ġ= Ġ 1 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġgoogle SignIn Client Ġ: ĠGoogle SignIn Client ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ final _ login ) ĊĊĠĠĠĠĠĠĠ Ġwindow . navigation Bar Color Ġ= ĠColor . parse Color ("# FFFFFF ") ĊĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . parse Color ("# FFFFFF ") ĊĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠĠĠĠĠ Ġg so Ġ= ĠGoogle SignIn Options . Builder ( Google SignIn Options . DEFAULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. requestId Token ( getString ( R . string . default _ web _ client _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġgoogle SignIn Client Ġ= ĠGoogle SignIn . getClient ( this , g so ) ĊĊĠĠĠĠĠĠĠ Ġsign _ in _ button . elevation Ġ= Ġ 0 F ĊĠĠĠĠĠĠĠ Ġsign _ in _ button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( this ," working ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign In () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= Ġgoogle SignIn Client . signIn Intent ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( signIn Intent , ĠRC _ SIGN _ IN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠResult Ġreturned Ġfrom Ġlaunch ing Ġthe ĠIntent Ġfrom ĠGoogle SignIn Api . get SignIn Intent (... ); ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠRC _ SIGN _ IN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠGoogle SignIn . get Signed In Account From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGoogle ĠSign ĠIn Ġwas Ġsuccessful , Ġauthenticate Ġwith ĠFirebase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġtask . getResult ( ApiException :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth With Google ( account !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! net Connection ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠInternet ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGoogle ĠSign ĠIn Ġfailed , Ġupdate ĠUI Ġappropriately ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" FI R ", Ġ" Google Ġsign Ġin Ġfailed ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirebase Auth With Google ( acct : ĠGoogle SignIn Account ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i (" FI R ", Ġ" firebase Auth With Google :" Ġ+ Ġac ct . id !! ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠGoogle Auth Provider . getC redential ( acct . id Token , Ġnull ) ĊĠĠĠĠĠĠĠ Ġauth . signIn With Credential ( credential ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess , Ġupdate ĠUI Ġwith Ġthe Ġsigned - in Ġuser 's Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" FI R ", Ġ" signIn With Credential : success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" FI R ", Ġ" signIn With Credential : failure ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Toast . makeText ( base Context ," Auth Ġfailed ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnet Connection (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġthis . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġval Ġni Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠ Ġreturn Ġni Ġ!= Ġnull Ġ&& Ġni . isConnected ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( user : ĠFirebase User ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , MainActivity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ ĠToast . makeText ( base Context ," Welcome Ġ${ user ?. displayName } Ġ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} Ċ } Ċ