package Ġcom . w op ata . register _ core . managers Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . v 4 . app . Fragment Activity Ċ import Ġcom . facebook . Callback Manager Ċ import Ġcom . facebook . Facebook Callback Ċ import Ġcom . facebook . Facebook Exception Ċ import Ġcom . facebook . login . Login Manager Ċ import Ġcom . facebook . login . Login Result Ċ import Ġcom . google . android . gms . auth . api . Auth Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġcom . w op ata . register _ core . models . Register Source Ċ import Ġcom . w op ata . register _ core . models . User ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġste ph env in ou ze Ġon Ġ 0 7 / 0 6 / 2 0 1 7 . Ċ Ġ*/ Ċ object ĠRegister Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ GOOGLE _ REGISTER Ġ= Ġ 1 ĊĊĠĠĠ Ġvar Ġfacebook Permissions : ĠList < String > Ġ= Ġarray ListOf (" public _ profile ") ĊĠĠĠ Ġvar Ġgoogle Id Token : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsign In : Ġ(( activity : ĠActivity , Ġuser : ĠUser ) Ġ-> ĠUnit )? Ġ= Ġ Ġnull ĊĠĠĠ Ġvar Ġsign Up : Ġ(( activity : ĠActivity , Ġuser : ĠUser ) Ġ-> ĠUnit )? Ġ= Ġ Ġnull ĊĠĠĠ Ġvar Ġreset : Ġ(( activity : ĠActivity , Ġuser : ĠUser ) Ġ-> ĠUnit )? Ġ= Ġ Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġcallback Manager : ĠCallback Manager Ġ= ĠCallback Manager . Factory . create () ĊĊĠĠĠ Ġfun Ġlogin ( activity : ĠFragment Activity , Ġsource : ĠRegister Source ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Source . NATIVE Ġ-> Ġthrow ĠIllegalStateException (" Use Ġyour Ġsign In / sign Up Ġmethods Ġto Ġhandle Ġyour Ġregistration Ġfor ĠN ATIVE Ġsource ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Source . FACE BOOK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( facebook Permissions . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). register Callback ( callback Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠFacebook Callback < Login Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( login Result : ĠLogin Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Manager . signIn ?. invoke ( activity , ĠUser ( token Ġ= Ġlogin Result . accessToken . token , Ġsource Ġ= ĠRegister Source . FACE BOOK )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠFacebook Exception ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). log In With Read Permissions ( activity , Ġfacebook Permissions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" At Ġleast Ġone Ġpermission Ġis Ġrequired Ġto Ġconnect Ġwith ĠFacebook ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Source . GOOGLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( google Id Token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġg so Ġ= ĠGoogle SignIn Options . Builder ( Google SignIn Options . DEFAULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. requestId Token ( google Id Token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoogle ApiClient Ġ= ĠGoogle ApiClient . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enable Auto Manage ( activity , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Api ( Auth . GOOGLE _ SIGN _ IN _ API , Ġg so ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign In Intent Ġ= ĠAuth . Google SignIn Api . get SignIn Intent ( google ApiClient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity For Result ( signIn Intent , ĠREQUEST _ GOOGLE _ REGISTER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Google Id Token Ġis Ġrequired Ġto Ġconnect Ġwith ĠGoogle ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Result ( activity : ĠActivity , Ġrequest Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ GOOGLE _ REGISTER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠAuth . Google SignIn Api . get SignIn Result From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Manager . signIn ?. invoke ( activity , ĠUser ( token Ġ= Ġresult . signIn Account ?. id Token , Ġsource Ġ= ĠRegister Source . GOOGLE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . is Success ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġcallback Manager . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfinish ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity . java Class ) ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ TOP Ġor ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ NO _ ANIM ATION ) ĊĠĠĠĠĠĠĠ Ġactivity . startActivity ( intent ) ĊĠĠĠ Ġ} Ċ Ċ }