package Ġcom . ban 2 apps . me . ui . launch Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġcom . ban 2 apps . me . R Ċ import Ġcom . ban 2 apps . me . ui . story . MainActivity Ċ import Ġcom . ban 2 apps . me . utils . Prefs Ċ import Ġcom . google . android . gms . auth . api . Auth Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Account Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Google Auth Provider Ċ import Ġkotlinx . android . synt hetic . main . activity _ sign _ in .* Ċ Ċ class ĠSign In Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// ĠFirebase Ġinstance Ġvariables ĊĠĠĠ Ġprivate Ġvar Ġm Firebase Auth : ĠFirebase Auth ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Google ApiClient : ĠGoogle ApiClient ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠRC _ SIGN _ IN Ġ= Ġ 9 0 0 1 ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠSign In Activity :: class . java . simple Name ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sign _ in ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠFirebase Auth ĊĠĠĠĠĠĠĠ Ġm Firebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠĠĠĠĠ Ġval Ġg so Ġ= ĠGoogle SignIn Options . Builder ( Google SignIn Options . DEFAULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. requestId Token ( getString ( R . string . default _ web _ client _ id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Email () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġm Google ApiClient Ġ= ĠGoogle ApiClient . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Auto Manage ( this , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Auth . GOOGLE _ SIGN _ IN _ API , Ġg so ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠFirebase Auth ĊĠĠĠĠĠĠĠ Ġm Firebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĊĠĠĠĠĠĠĠ Ġsign In Button . setOnClickListener Ġ{ Ġsign In () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign In () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth . Google SignIn Api . get SignIn Intent ( m Google ApiClient ) ĊĠĠĠĠĠĠĠ Ġ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 Client . get SignIn Intent (... ); ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠRC _ SIGN _ IN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠAuth . Google SignIn Api . get SignIn Result From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGoogle ĠSign - In Ġwas Ġsuccessful , Ġauthenticate Ġwith ĠFirebase ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= Ġresult . signIn Account ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirebase Auth With Google ( account !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGoogle ĠSign - In Ġfailed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Google ĠSign - In Ġfailed .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfirebase Auth With Google ( acct : ĠGoogle SignIn Account ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" firebase Auth With G oo og le :" Ġ+ Ġac ct . id !! ) ĊĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠGoogle Auth Provider . getC redential ( acct . id Token , Ġnull ) ĊĠĠĠĠĠĠĠ Ġm Firebase Auth !!. signIn With Credential ( credential ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" signIn With Credential : onComplete :" Ġ+ Ġtask . is Successful ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP refs . setId ( this , Ġac ct . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĠIf Ġsign Ġin Ġsucceeds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthe Ġauth Ġstate Ġlistener Ġwill Ġbe Ġnotified Ġand Ġlogic Ġto Ġhandle Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsigned Ġin Ġuser Ġcan Ġbe Ġhandled Ġin Ġthe Ġlistener . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" signIn With Credential ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ SignIn Activity , Ġ" Authentication Ġfailed .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this @ SignIn Activity , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ