package Ġcom . auth 0 . android . provider Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġcom . auth 0 . android . Auth 0 Ċ import Ġcom . auth 0 . android . authentication . Authentication Exception Ċ import Ġcom . auth 0 . android . callback . Callback Ċ import Ġcom . auth 0 . android . result . Credentials Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠOAuth 2 ĠWeb ĠAuthentication ĠProvider . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠIt Ġuses Ġan Ġexternal Ġbrowser Ġby Ġsending Ġthe Ġ[ android . content . Intent . ACTION _ VIEW ] Ġintent . Ċ Ġ*/ Ċ public Ġobject ĠWeb Auth Provider Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG : ĠString ? Ġ= ĠWeb Auth Provider :: class . simple Name ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ get : Visible ForTesting ( otherwise Ġ= ĠVis ible ForTesting . PRIVATE ) ĊĠĠĠ Ġinternal Ġvar Ġmanager Instance : ĠRes um able Manager ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ// ĠPublic Ġmethods ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe ĠWeb Auth Provider Ġinstance Ġfor Ġlogging Ġout Ġthe Ġuser Ġusing Ġan Ġaccount . ĠAdditional Ġsettings Ġcan Ġbe Ġconfigured ĊĠĠĠĠ Ġ* Ġin Ġthe ĠLogout Builder , Ġlike Ġchanging Ġthe Ġscheme Ġof Ġthe Ġreturn Ġto ĠURL . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaccount Ġto Ġuse Ġfor Ġauthentication ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew ĠBuilder Ġinstance Ġto Ġcustomize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġlogout ( account : ĠAuth 0 ): ĠLogout Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLogout Builder ( account ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitialize Ġthe ĠWeb Auth Provider Ġinstance Ġfor Ġauthentic ating Ġthe Ġuser Ġusing Ġan Ġaccount . ĠAdditional Ġsettings Ġcan Ġbe Ġconfigured ĊĠĠĠĠ Ġ* Ġin Ġthe ĠBuilder , Ġlike Ġsetting Ġthe Ġconnection Ġname Ġor Ġauthentication Ġparameters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaccount Ġto Ġuse Ġfor Ġauthentication ĊĠĠĠĠ Ġ* Ġ@ return Ġa Ġnew ĠBuilder Ġinstance Ġto Ġcustomize . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġlogin ( account : ĠAuth 0 ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( account ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFin ishes Ġthe Ġauthentication Ġor Ġlog Ġout Ġflow Ġby Ġpassing Ġthe Ġdata Ġreceived Ġin Ġthe Ġactivity 's Ġon New Intent () Ġcallback . ĊĠĠĠĠ Ġ* ĠThe Ġfinal Ġresult Ġwill Ġbe Ġdelivered Ġto Ġthe Ġcallback Ġspecified Ġwhen Ġcalling Ġstart (). ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġis Ġno Ġlonger Ġrequired Ġto Ġbe Ġcalled , Ġthe Ġauthentication Ġis Ġhandled Ġinternally Ġas Ġlong Ġas Ġyou 've Ġcorrectly Ġsetup Ġthe Ġintent - filter . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġintent Ġthe Ġdata Ġreceived Ġon Ġthe Ġon New Intent () Ġcall . ĠWhen Ġnull Ġis Ġpassed , Ġthe Ġauthentication Ġwill Ġbe Ġconsidered Ġcanceled . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġa Ġresult Ġwas Ġexpected Ġand Ġhas Ġa Ġvalid Ġformat , Ġor Ġfalse Ġif Ġnot . ĠWhen Ġtrue Ġis Ġreturned Ġa Ġcall Ġon Ġthe Ġcallback Ġis Ġexpected . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġresume ( intent : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( manager Instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" There Ġis Ġno Ġprevious Ġinstance Ġof Ġthis Ġprovider .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠAuthor ize Result ( intent ) ĊĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġmanager Instance !!. resume ( result ) ĊĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Manager Instance () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuccess ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġ@ Visible ForTesting ( otherwise Ġ= ĠVis ible ForTesting . PRIVATE ) ĊĠĠĠ Ġinternal Ġfun Ġreset Manager Instance () Ġ{ ĊĠĠĠĠĠĠĠ Ġmanager Instance Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġclass ĠLogout Builder Ġinternal Ġconstructor ( private Ġval Ġaccount : ĠAuth 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġscheme Ġ= Ġ" https " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġreturn To Url : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġct Options : ĠCustom Tabs Options Ġ= ĠCustom Tabs Options . newBuilder (). build () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġf ederated : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġusing Ġa ĠCustom ĠTabs Ġcompatible ĠBrowser , Ġapply Ġthese Ġcustomization Ġoptions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġthe ĠCustom ĠTabs Ġcustomization Ġoptions ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Custom Tabs Options ( options : ĠCustom Tabs Options ): ĠLogout Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġct Options Ġ= Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġa Ġcustom ĠScheme Ġto Ġuse Ġon Ġthe ĠReturn ĠTo ĠURL . ĠDefault Ġscheme Ġis Ġ' https '. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġscheme Ġto Ġuse Ġin Ġthe ĠReturn ĠTo ĠURL . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Scheme ( scheme : ĠString ): ĠLogout Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlower Case Ġ= Ġscheme . toLowerCase ( Locale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scheme Ġ!= Ġlower Case ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġprovide Ġthe Ġscheme Ġin Ġlowercase Ġand Ġmake Ġsure Ġit 's Ġthe Ġsame Ġconfigured Ġin Ġthe Ġintent Ġfilter . ĠAndroid Ġexpects Ġthe Ġscheme Ġto Ġbe Ġlowercase ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . scheme Ġ= Ġscheme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġa Ġcustom ĠRedirect ĠTo ĠURL Ġto Ġuse Ġto Ġinvoke Ġthe Ġapp Ġon Ġred irection . ĊĠĠĠĠĠĠĠĠ Ġ* ĠNorm ally , Ġyou Ġwouldn 't Ġneed Ġto Ġcall Ġthis Ġmethod Ġmanually Ġas Ġthe Ġdefault Ġvalue Ġis Ġautogenerated Ġfor Ġyou . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġ[ Logout Builder . with Scheme ] Ġconfiguration Ġis Ġignored Ġwhen Ġthis Ġmethod Ġis Ġcalled . ĠIt Ġis Ġyour Ġresponsibility Ġto Ġpass Ġa Ġwell - formed ĠURL . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġreturn To Url Ġto Ġuse Ġto Ġinvoke Ġthe Ġapp Ġon Ġred irection . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Return To Url ( return To Url : ĠString ): ĠLogout Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . return To Url Ġ= Ġreturn To Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAlthough Ġnot Ġa Ġcommon Ġpractice , Ġyou Ġcan Ġforce Ġthe Ġuser Ġto Ġlog Ġout Ġof Ġtheir Ġidentity Ġprovider . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThink Ġof Ġthe Ġuser Ġexperience Ġbefore Ġyou Ġuse Ġthis Ġparameter . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġfeature Ġis Ġnot Ġsupported Ġby Ġevery Ġidentity Ġprovider . ĠRead Ġmore Ġabout Ġthe Ġlimitations Ġin ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġ[ Log ĠUsers ĠOut Ġof ĠIdentity ĠProvider ]( https :// auth 0 . com / docs / logout / log - users - out - of - id ps ) Ġarticle . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith F ederated (): ĠLogout Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . fed erated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequest Ġthe Ġuser Ġsession Ġto Ġbe Ġcleared . ĠWhen Ġsuccessful , Ġthe Ġcallback Ġwill Ġget Ġinvoked . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġerror Ġis Ġraised Ġif Ġthere Ġare Ġno Ġbrowser Ġapplications Ġinstalled Ġin Ġthe Ġdevice Ġor Ġif ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġuser Ġclosed Ġthe Ġbrowser Ġbefore Ġcomplet ing Ġthe Ġlogout . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ Ġto Ġrun Ġthe Ġlog Ġout ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġto Ġinvoke Ġwhen Ġlog Ġout Ġis Ġsuccessful ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠAuthentication Exception . is Browser App Not Available ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠAuthentication Exception . is Authentication Canceled ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġstart ( context : ĠContext , Ġcallback : ĠCallback < Void ?, ĠAuthentication Exception >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Manager Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ct Options . has Compatible Browser ( context . package Manager )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠAuthentication Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 0 . browser _ not _ available ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġcompatible ĠBrowser Ġapplication Ġis Ġinstalled ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( return To Url Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn To Url Ġ= ĠCallback Helper . get Callback Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . get Domain Url () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogout Manager Ġ= ĠLogout Manager ( account , Ġcallback , Ġreturn To Url !! , Ġct Options , Ġf ederated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Instance Ġ= Ġlogout Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout Manager . start Logout ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġclass ĠBuilder Ġinternal Ġconstructor ( private Ġval Ġaccount : ĠAuth 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalues : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġheaders : ĠMutable Map < String , ĠString > Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpk ce : ĠPK CE ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġissuer : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġscheme : ĠString Ġ= Ġ" https " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġredirect Uri : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinv itation Url : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġct Options : ĠCustom Tabs Options Ġ= ĠCustom Tabs Options . newBuilder (). build () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġle ew ay : ĠInt ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġa Ġcustom Ġstate Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġstate Ġto Ġuse Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith State ( state : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ STATE ] Ġ= Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġa Ġcustom Ġnonce Ġvalue Ġto Ġavoid Ġreplay Ġattacks . ĠIt Ġwill Ġbe Ġsent Ġin Ġthe Ġauth Ġrequest Ġthat Ġwill Ġbe Ġreturned Ġback Ġas Ġa Ġclaim Ġin Ġthe Ġid _ token ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġnonce Ġto Ġuse Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Nonce ( nonce : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nonce . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ NON CE ] Ġ= Ġnonce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġthe Ġmax Ġage Ġvalue Ġfor Ġthe Ġauthentication . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmax Age Ġto Ġuse Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Max Age ( max Age : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ MAX _ AGE ] Ġ= Ġmax Age . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġthe Ġle ew ay Ġor Ġclock Ġskew Ġto Ġbe Ġused Ġfor ĠID ĠToken Ġverification . ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefaults Ġto Ġ 6 0 Ġseconds . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġle ew ay Ġto Ġuse Ġfor ĠID Ġtoken Ġverification , Ġin Ġseconds . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Id Token Verification Le ew ay ( le ew ay : ĠInt ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . le ew ay Ġ= Ġle ew ay ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSet Ġthe Ġexpected Ġissuer Ġto Ġbe Ġused Ġfor ĠID ĠToken Ġverification . ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefaults Ġto Ġthe Ġvalue Ġreturned Ġby Ġ[ Auth 0 . get Domain Url ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġissuer Ġto Ġuse Ġfor ĠID Ġtoken Ġverification . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Id Token Verification Issuer ( issuer : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . issuer Ġ= Ġissuer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġa Ġcustom Ġaudience Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġaudience Ġto Ġuse Ġin Ġthe Ġrequests ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Audience ( audience : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ KEY _ AU DI ENCE ] Ġ= Ġaudience ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġa Ġcustom ĠScheme Ġto Ġuse Ġon Ġthe ĠRedirect ĠURI . ĠDefault Ġscheme Ġis Ġ' https '. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġscheme Ġto Ġuse Ġin Ġthe ĠRedirect ĠURI . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Scheme ( scheme : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlower Case Ġ= Ġscheme . toLowerCase ( Locale . ROOT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( scheme Ġ!= Ġlower Case ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġprovide Ġthe Ġscheme Ġin Ġlowercase Ġand Ġmake Ġsure Ġit 's Ġthe Ġsame Ġconfigured Ġin Ġthe Ġintent Ġfilter . ĠAndroid Ġexpects Ġthe Ġscheme Ġto Ġbe Ġlowercase ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . scheme Ġ= Ġscheme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġa Ġcustom ĠRedirect ĠURI Ġto Ġuse Ġto Ġinvoke Ġthe Ġapp Ġon Ġred irection . ĊĠĠĠĠĠĠĠĠ Ġ* ĠNorm ally , Ġyou Ġwouldn 't Ġneed Ġto Ġcall Ġthis Ġmethod Ġmanually Ġas Ġthe Ġdefault Ġvalue Ġis Ġautogenerated Ġfor Ġyou . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġ[ Builder . with Scheme ] Ġconfiguration Ġis Ġignored Ġwhen Ġthis Ġmethod Ġis Ġcalled . ĠIt Ġis Ġyour Ġresponsibility Ġto Ġpass Ġa Ġwell - formed ĠURI . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġredirect Uri Ġto Ġuse Ġto Ġinvoke Ġthe Ġapp Ġon Ġred irection . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Redirect Uri ( redirect Uri : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . redirect Uri Ġ= Ġredirect Uri ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġan Ġinv itation ĠURL Ġto Ġjoin Ġan Ġorganization . ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġcalled Ġin Ġcombination Ġwith ĠWeb Auth Provider # with Organization , Ġthe Ġinv itation ĠURL ĊĠĠĠĠĠĠĠĠ Ġ* Ġwill Ġtake Ġprecedence . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġinv itation Url Ġthe Ġorganization Ġinv itation ĠURL ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġwith Organization ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Invitation Url ( inv itation Url : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . inv itation Url Ġ= Ġinv itation Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecify Ġthe ĠID Ġof Ġan Ġorganization Ġto Ġjoin . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġorganization Ġthe ĠID Ġof Ġthe Ġorganization Ġto Ġjoin ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġwith Invitation Url ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Organization ( organization : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ ORG AN IZATION ] Ġ= Ġorganization ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGive Ġa Ġscope Ġfor Ġthis Ġrequest . ĠThe Ġdefault Ġscope Ġused Ġis Ġ" openid Ġprofile Ġemail ". ĊĠĠĠĠĠĠĠĠ Ġ* ĠReg ard less Ġof Ġthe Ġscopes Ġpassed , Ġthe Ġ" openid " Ġscope Ġis Ġalways Ġen forced . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġscope Ġto Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Scope ( scope : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ SCOPE ] Ġ= Ġscope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAdd Ġcustom Ġheaders Ġfor ĠPK CE Ġtoken Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġheaders Ġfor Ġtoken Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Headers ( headers : ĠMap < String , ĠString >): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . headers . put All ( headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGive Ġa Ġconnection Ġscope Ġfor Ġthis Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġconnection Scope Ġto Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Connection Scope ( var arg Ġconnection Scope : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ KEY _ CONNECTION _ SCOPE ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Scope . join ToString ( separator Ġ= Ġ", ") Ġ{ Ġit . trim () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġextra Ġparameters Ġon Ġthe Ġrequest . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparameters Ġto Ġadd ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Parameters ( parameters : ĠMap < String , ĠAny ?> ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġparameters ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ key ] Ġ= Ġvalue . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthe Ġgiven Ġconnection . ĠBy Ġdefault Ġno Ġconnection Ġis Ġspecified , Ġso Ġthe Ġlogin Ġpage Ġwill Ġbe Ġdisplayed . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġconnection Name Ġto Ġuse ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Connection ( connection Name : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ CONNECTION ] Ġ= Ġconnection Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġusing Ġa ĠCustom ĠTabs Ġcompatible ĠBrowser , Ġapply Ġthese Ġcustomization Ġoptions . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġthe ĠCustom ĠTabs Ġcustomization Ġoptions ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġcurrent Ġbuilder Ġinstance ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġwith Custom Tabs Options ( options : ĠCustom Tabs Options ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġct Options Ġ= Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Visible ForTesting ( otherwise Ġ= ĠVis ible ForTesting . PRIVATE ) ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġwith PK CE ( pk ce : ĠPK CE ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pk ce Ġ= Ġpk ce ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRequest Ġuser ĠAuthentication . ĠThe Ġresult Ġwill Ġbe Ġreceived Ġin Ġthe Ġcallback . ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġerror Ġis Ġraised Ġif Ġthere Ġare Ġno Ġbrowser Ġapplications Ġinstalled Ġin Ġthe Ġdevice , Ġor Ġif ĊĠĠĠĠĠĠĠĠ Ġ* Ġdevice Ġdoes Ġnot Ġsupport Ġthe Ġnecessary Ġalgorithms Ġto Ġsupport ĠPro of Ġof ĠKey ĠExchange Ġ( PK CE ) ĊĠĠĠĠĠĠĠĠ Ġ* Ġ( this Ġis Ġnot Ġexpected ), Ġor Ġif Ġthe Ġuser Ġclosed Ġthe Ġbrowser Ġbefore Ġcomplet ing Ġthe Ġauthentication . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġcontext Ġto Ġrun Ġthe Ġauthentication ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcallback Ġto Ġreceive Ġthe Ġparsed Ġresults ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠAuthentication Exception . is Browser App Not Available ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠAuthentication Exception . is PK C EN ot Available ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠAuthentication Exception . is Authentication Canceled ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġstart ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback : ĠCallback < Credentials , ĠAuthentication Exception > ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Manager Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ct Options . has Compatible Browser ( context . package Manager )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠAuthentication Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 0 . browser _ not _ available ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġcompatible ĠBrowser Ġapplication Ġis Ġinstalled ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinv itation Url ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠUri . parse ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorganization Id Ġ= Ġurl . getQuery Parameter ( OAuth Manager . KEY _ ORG AN IZATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinv itation Id Ġ= Ġurl . getQuery Parameter ( OAuth Manager . KEY _ INV IT ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( organization Id . isNull Or Blank () Ġ|| Ġinv itation Id . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex Ġ= ĠAuthentication Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 0 . invalid _ inv itation _ url ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġinv itation ĠURL Ġprovided Ġdoesn 't Ġcontain Ġthe Ġ' organization ' Ġor Ġ' inv itation ' Ġvalues ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . on Failure ( ex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ ORG AN IZATION ] Ġ= Ġorganization Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues [ OAuth Manager . KEY _ INV IT ATION ] Ġ= Ġinv itation Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠOAuth Manager ( account , Ġcallback , Ġvalues , Ġct Options ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . set Headers ( headers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . set PK CE ( pk ce ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . setId Token Verification Le ew ay ( le ew ay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . setId Token Verification Issuer ( issuer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager Instance Ġ= Ġmanager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( redirect Uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Uri Ġ= ĠCallback Helper . get Callback Uri ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheme , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . application Context . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount . get Domain Url () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . start Authentication ( context , Ġredirect Uri !! , Ġ 1 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ AU DI ENCE Ġ= Ġ" audience " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ CONNECTION _ SCOPE Ġ= Ġ" connection _ scope " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ