/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 . ĠHu awei ĠTechnologies ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . hu awei . ag c . quickstart . auth . wx api Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . hu awei . ag c . quickstart . auth . R Ċ import Ġcom . tencent . mm . opens dk . model msg . Send Auth Ċ import Ġcom . tencent . mm . opens dk . openapi . I WX API Ċ import Ġcom . tencent . mm . opens dk . openapi . WX API Factory Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġretrofit 2 . http . Field Ċ import Ġretrofit 2 . http . POST Ċ Ċ object ĠW X Helper Ġ{ ĊĠĠĠ Ġvar Ġapi : ĠI WX API ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar ĠAPP _ ID : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠSE CRET _ ID : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcallback : ĠCallback ? Ġ= Ġnull ĊĠĠĠ Ġfun Ġset Context ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAPP _ ID Ġ= Ġcontext . getString ( R . string . weixin _ app _ id ) ĊĠĠĠĠĠĠĠ ĠSE CRET _ ID Ġ= Ġcontext . getString ( R . string . weixin _ secret _ id ) ĊĠĠĠĠĠĠĠ Ġapi Ġ= ĠW X API Factory . create WX API ( context , ĠAPP _ ID , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġapi ?. register App ( APP _ ID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign In ( callback : ĠCallback ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠW X Helper . callback Ġ= Ġcallback ĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠSend Auth . Req () ĊĠĠĠĠĠĠĠ Ġreq . scope Ġ= Ġ" sns api _ userinfo " ĊĠĠĠĠĠĠĠ Ġreq . state Ġ= Ġ" none " ĊĠĠĠĠĠĠĠ Ġapi !!. send Req ( req ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetToken ( code : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// api . weixin . qq . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġretrofit . create ( WX Token Service :: class . java ). getToken ( code , ĠAPP _ ID , ĠSE CRET _ ID ). enqueue ( object Ġ: Ġretrofit 2 . Callback < Token Response ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Token Response ?> ?, Ġresponse : ĠResponse < Token Response ?> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response ?. body () Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback !!. on Success ( response . body () !!. access _ token , Ġresponse . body () !!. openid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback !!. on Fail () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Token Response ?> ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback !!. on Fail () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonSuccess ( accessToken : ĠString ?, Ġopen Id : ĠString ?) ĊĠĠĠĠĠĠĠ Ġfun Ġon Fail () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠW X Token Service Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ POST (" sns / oauth 2 / access _ token ") ĊĠĠĠĠĠĠĠ Ġfun ĠgetToken (@ Field (" code ") Ġcode : ĠString ?, Ġ@ Field (" appid ") Ġapp id : ĠString ?, Ġ@ Field (" secret ") Ġsecret : ĠString ?): ĠCall < Token Response ?> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠToken Response Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġopen id : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġaccess _ token : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }