package Ġcom . google . firebase . quickstart . auth . kotlin Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġcom . google . firebase . auth . Twitter Auth Provider Ċ import Ġcom . google . firebase . quickstart . auth . R Ċ import Ġcom . twitter . sdk . android . core . Callback Ċ import Ġcom . twitter . sdk . android . core . Result Ċ import Ġcom . twitter . sdk . android . core . Twitter Ċ import Ġcom . twitter . sdk . android . core . Twitter Auth Config Ċ import Ġcom . twitter . sdk . android . core . Twitter Config Ċ import Ġcom . twitter . sdk . android . core . Twitter Core Ċ import Ġcom . twitter . sdk . android . core . Twitter Exception Ċ import Ġcom . twitter . sdk . android . core . Twitter Session Ċ import Ġcom . twitter . sdk . android . core . identity . Twitter Login Button Ċ import Ġkotlinx . android . synt hetic . main . activity _ twitter . button Twitter Login Ċ import Ġkotlinx . android . synt hetic . main . activity _ twitter . button Twitter Sign out Ċ import Ġkotlinx . android . synt hetic . main . activity _ twitter . detail Ċ import Ġkotlinx . android . synt hetic . main . activity _ twitter . status Ċ Ċ class ĠTwitter Login Activity Ġ: ĠBase Activity (), ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġ// Ġ[ START Ġdeclare _ auth ] ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġ// Ġ[ END Ġdeclare _ auth ] ĊĊĠĠĠ Ġprivate Ġvar Ġlogin Button : ĠTwitter Login Button ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠConfigure ĠTwitter ĠSDK ĊĠĠĠĠĠĠĠ Ġval Ġauth Config Ġ= ĠTwitter Auth Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . twitter _ consumer _ key ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . twitter _ consumer _ secret )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtwitter Config Ġ= ĠTwitter Config . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. twitter Auth Config ( auth Config ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ ĠTwitter . initialize ( twitter Config ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġlayout Ġ( must Ġbe Ġdone Ġafter ĠTwitter Ġis Ġconfigured ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ twitter ) ĊĊĠĠĠĠĠĠĠ Ġbutton Twitter Sign out . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġinitialize _ auth ] ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠFirebase ĠAuth ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġinitialize _ auth ] ĊĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġinitialize _ twitter _ login ] ĊĊĠĠĠĠĠĠĠ Ġbutton Twitter Login ?. callback Ġ= Ġobject Ġ: ĠCallback < Twitter Session >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsuccess ( result : ĠResult < Twitter Session >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" twitter Login : success $ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Twitter Session ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfailure ( exception : ĠTwitter Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" twitter Login : failure ", Ġexception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġinitialize _ twitter _ login ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ[ START Ġon _ start _ check _ user ] ĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġuser Ġis Ġsigned Ġin Ġ( non - null ) Ġand Ġupdate ĠUI Ġaccordingly . ĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġupdate UI ( currentUser ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġon _ start _ check _ user ] ĊĊĠĠĠ Ġ// Ġ[ START Ġon _ activity _ result ] ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPass Ġthe Ġactivity Ġresult Ġto Ġthe ĠTwitter Ġlogin Ġbutton . ĊĠĠĠĠĠĠĠ Ġlogin Button !!. on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġon _ activity _ result ] ĊĊĠĠĠ Ġ// Ġ[ START Ġauth _ with _ twitter ] ĊĠĠĠ Ġprivate Ġfun Ġhandle Twitter Session ( session : ĠTwitter Session ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" handle Twitter Session :$ session ") ĊĠĠĠĠĠĠĠ Ġ// Ġ[ START _ EXCL UDE Ġsilent ] ĊĠĠĠĠĠĠĠ Ġshow Progress Dialog () ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END _ EXCL UDE ] ĊĊĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠTwitter Auth Provider . getC redential ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . auth Token . token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . auth Token . secret ) ĊĊĠĠĠĠĠĠĠ Ġ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 ( TAG , Ġ" signIn With Credential : success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" signIn With Credential : failure ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġ" Authentication Ġfailed .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ START _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ END _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġauth _ with _ twitter ] ĊĊĠĠĠ Ġprivate Ġfun Ġsign Out () Ġ{ ĊĠĠĠĠĠĠĠ Ġauth . sign Out () ĊĠĠĠĠĠĠĠ ĠTwitter Core . getInstance (). session Manager . clear Active Session () ĊĊĠĠĠĠĠĠĠ Ġupdate UI ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( user : ĠFirebase User ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġhide Progress Dialog () ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . text Ġ= ĠgetString ( R . string . twitter _ status _ fmt , Ġuser . displayName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail . text Ġ= ĠgetString ( R . string . firebase _ status _ fmt , Ġuser . uid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Twitter Login . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Twitter Sign out . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus . setText ( R . string . signed _ out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdetail . text Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Twitter Login . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Twitter Sign out . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġv . id ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== ĠR . id . button Twitter Sign out ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign Out () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Twitter Login " ĊĠĠĠ Ġ} Ċ } Ċ