package Ġcom . rn k ua ish ou Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġcom . facebook . react . bridge .* Ċ import Ġcom . facebook . react . modules . core . Device Event Manager Module Ċ import Ġcom . kw ai . auth . common . Internal Response Ċ import Ġcom . kw ai . auth . common . Kw ai Constants Ċ import Ġcom . kw ai . opens dk . auth . IK w ai Auth Listener Ċ import Ġcom . kw ai . opens dk . auth . IK w ai Open Sdk Auth Ċ import Ġcom . kw ai . opens dk . auth . Kw ai Open Sdk Auth Ċ import Ġcom . kw ai . opens dk . sdk . utils . Log Util Ċ import Ġcom . kw ai . opens dk . sdk . utils . Network Util Ċ import Ġorg . json . JSONObject Ċ import Ġjava . util .* ĊĊ Ċ class ĠR nk ua ish ou Module ( react Context : ĠReact ApplicationContext ) Ġ: ĠReact Context Base Java Module ( react Context ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" R nk ua ish ou " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠExample Ġmethod ĊĠĠĠ Ġ// ĠSee Ġhttps :// react native . dev / docs / native - modules - android ĊĠĠĠ Ġ@ React Method ĊĠĠĠ Ġfun Ġmultiply ( a : ĠInt , Ġb : ĠInt , Ġpromise : ĠPromise ) Ġ{ ĊĊĠĠĠĠĠ Ġpromise . resolve ( a Ġ* Ġb ) ĊĊĠĠĠ Ġ} ĊĊĠ Ġvar ĠappId : ĠString Ġ= Ġ"" ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġregister App ( appid : ĠString , Ġuniversal Link : ĠString , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠ Ġif Ġ( appId Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠ Ġpromise . resolve (" noop ") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġcurrent Activity : ĠActivity ? Ġ= ĠgetCurrent Activity () ĊĠĠĠ Ġif Ġ( current Activity Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġpromise . resolve (" current Activity Ġis Ġnull !") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġctx : ĠApplication Ġ= Ġcurrent Activity . application ĊĠĠĠ ĠK w ai Open Sdk Auth . init ( ctx ) ĊĠĠĠ ĠappId Ġ= Ġapp id ĊĠĠĠ ĠLog Util . i ( TAG , Ġ"$ universal Link Ġis Ġused Ġby Ġios , Ġjust Ġa Ġplaceholder .") ĊĠĠĠ Ġpromise . resolve (" ok ") ĊĠ Ġ} ĊĊĠ Ġ@ React Method ĊĠ Ġfun Ġks auth ( login Type : ĠString , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠ Ġif ( login Type ==" app ") Ġ{ ĊĠĠĠĠĠ Ġapp Login () ĊĠĠĠ Ġ} Ġelse Ġif ( login Type ==" h 5 ") Ġ{ ĊĠĠĠĠĠ Ġh 5 Login () ĊĠĠĠ Ġ} ĊĠĠĠ Ġpromise . resolve (" called ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġval ĠTAG Ġ= Ġ" R nk ua ish ou Module " ĊĠ Ġprivate Ġvar ĠURL _ HOST Ġ= Ġ" https :// open . k ua ish ou . com " ĊĠ Ġprivate Ġval ĠNET WORK _ MAX _ RETRY _ TIMES Ġ= Ġ 5 ĊĊĠ Ġ// Ġæµ ĭ è¯ķ demo çĶ¨çļĦ çļĦ appId åĴĮ app Secret ï¼Į ç¬¬ä¸ī æĸ¹ å®¢æĪ·ç«¯ è¯· ä½¿çĶ¨ åĪĨéħį çļĦæķ°æį® ĊĠ Ġprivate Ġvar ĠAPP _ ID Ġ= Ġ" ks 6 7 5 2 5 8 4 7 0 8 9 1 3 8 5 4 0 8 " ĊĠ Ġprivate Ġvar ĠAPP _ SECRET Ġ= Ġ" Se - O 1 sv M qf Lv OF v qz G pe v A " Ġ// " c AQ mb 4 gj Te CW 3 Sf 4 en Q Db Q " ĊĊĠ Ġprivate Ġfun Ġget Request Open Id Url ( grant Type : ĠString , ĠappId : ĠString , Ġapp Key : ĠString , Ġcode : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġbuilder . append ( URL _ HOST ) ĊĠĠĠ Ġbuilder . append ("/ oauth 2 / access _ token ?") ĊĠĠĠ Ġbuilder . append (" grant _ type =$ grant Type ") ĊĠĠĠ Ġbuilder . append ("& app _ id =$ appId ") ĊĠĠĠ Ġbuilder . append ("& app _ secret =$ app Key ") ĊĠĠĠ Ġbuilder . append ("& code =$ code ") ĊĠĠĠ Ġreturn Ġbuilder . toString () ĊĠ Ġ} ĊĊĠ Ġ// Ġèİ·åıĸ open Id çļĦ ç½ĳç»ľ è¯·æ±Ĥ ï¼Į ä¸ºäºĨ å®īåħ¨ æĢ§ ï¼Į å»ºè®® æĶ¾åľ¨ ç¬¬ä¸ī æĸ¹ å®¢æĪ·ç«¯ çļĦ æľįåĬ¡åĻ¨ ä¸Ń ï¼Į çĶ± ç¬¬ä¸ī æĸ¹ æľįåĬ¡åĻ¨ å®ŀçİ° è¿Ļä¸ª è¯·æ±Ĥ æİ¥åı£ åĲİ å°Ĩ openid è¿ĶåĽŀ ç¬¬ä¸ī æĸ¹ å®¢æĪ·ç«¯ ĊĠ Ġprivate Ġfun Ġget Open Id By Network ( code : ĠString ): ĠString ? Ġ{ ĊĠĠĠ Ġvar ĠappId : ĠString Ġ= ĠAPP _ ID ĊĠĠĠ Ġvar Ġapp Secret : ĠString Ġ= ĠAPP _ SECRET ĊĊĠĠĠ Ġval Ġurl : ĠString Ġ= Ġget Request Open Id Url (" code ", ĠappId , Ġapp Secret , Ġcode ) ĊĠĠĠ Ġval Ġresult Ġ= ĠNetwork Util . get ( url , Ġnull , Ġnull ) ĊĠĠĠ Ġvar Ġopen Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠLog Util . i ( TAG , Ġ" result =$ result ") ĊĠĠĠĠĠ Ġval Ġobj Ġ= ĠJSONObject ( result ) ĊĠĠĠĠĠ Ġopen Id Ġ= Ġobj . getString (" open _ id ") ĊĠĠĠĠĠ ĠLog Util . i ( TAG , Ġ" open Id =$ open Id ") ĊĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ ĠLog Util . e ( TAG , Ġ" get Open Id Ġexception ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġopen Id ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġth iz : R nk ua ish ou Module Ġ= Ġthis ĊĠ Ġprivate Ġvar Ġm Open Id : ĠString ? Ġ= Ġnull ĊĠ Ġprivate Ġval Ġm Kw ai Open Sdk Auth : ĠIK w ai Open Sdk Auth ? Ġ= ĠK w ai Open Sdk Auth () ĊĠ Ġval Ġm Kw ai Auth Listener : ĠIK w ai Auth Listener Ġ= Ġobject Ġ: ĠIK w ai Auth Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( response : ĠInternal Response ) Ġ{ ĊĠĠĠĠĠ Ġval Ġmap Ġ= ĠArguments . create Map () ĊĠĠĠĠĠ Ġmap . put Int (" err Code ", Ġresponse . errorCode ) ĊĠĠĠĠĠ Ġmap . putString (" error Msg ", Ġresponse . error Msg ) ĊĠĠĠĠĠ Ġmap . putString (" auth Code ", Ġresponse . code ) ĊĠĠĠĠĠ Ġmap . putString (" state ", Ġresponse . state ) ĊĠĠĠĠĠ Ġmap . putString (" type ", Ġ" Send Auth . Resp ") ĊĊĠĠĠĠĠ Ġvar Ġctx : ĠReact ApplicationContext ? Ġ= Ġth iz . get React ApplicationContext (); ĊĠĠĠĠĠ Ġctx ?. get JS Module ( Device Event Manager Module . RCT Device EventEmitter :: class . java )?. emit (" Ku ai Sh ou _ Resp ", Ġmap ) Ċ Ċ // ĠĠĠĠĠ ĠThread Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġvar Ġresult : ĠString ? Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġvar Ġretry Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġwhile Ġ( null Ġ== Ġresult Ġ&& Ġretry Ġ< ĠNET WORK _ MAX _ RETRY _ TIMES ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġget Open Id By Network ( response . code ) Ċ // ĠĠĠĠĠĠĠĠĠ Ġretry ++ Ċ // ĠĠĠĠĠĠĠĠĠ ĠLog Util . i ( TAG , Ġ" retry =$ retry ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġopen Id Ġ= Ġresult Ċ // ĠĠĠĠĠĠĠ Ġval Ġmain Handler Ġ= ĠHandler ( Looper . get Main Looper ()) Ċ // ĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠ Ġm Open Id Ġ= Ġopen Id Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failed ( state : ĠString , Ġerr Code : ĠInt , ĠerrMsg : ĠString ) Ġ{ Ċ // ĠĠĠĠĠ Ġm Open Id Tv . setText (" code Ġerror Ġis Ġ$ err Code Ġand Ġmsg Ġis Ġ$ err Msg ") ĊĠĠĠĠĠ ĠLog Util . i ( TAG , Ġ" code Ġerror Ġis Ġ$ err Code Ġand Ġmsg Ġis Ġ$ err Msg ") ĊĠĠĠĠĠ Ġif ( err Code == Ġ- 1 0 0 5 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠerrMsg Ġ= Ġ" CODE _ CANCEL _ NO _ APP " ĊĠĠĠĠĠĠĠ Ġh 5 Login (); ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ Ċ // ĠĠĠĠĠ Ġm Open Id Tv . setText (" login Ġis Ġcanceled ") ĊĠĠĠĠĠ ĠLog Util . i ( TAG , Ġ" login Ġis Ġcanceled ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġprivate Ġvar ĠSTATE =" no use " ĊĠ Ġprivate Ġvar Ġplatform List Ġ= ĠArrayList < String >( 2 ) ĊĠ Ġinit Ġ{ ĊĠĠĠ Ġplatform List . add ( Kw ai Constants . Platform . NE B ULA _ APP ) ĊĠĠĠ Ġplatform List . add ( Kw ai Constants . Platform . KW AI _ APP ) ĊĠ Ġ} ĊĠ Ġ// Ġapp è°ĥ èµ· çĻ»å½ķ ĊĠ Ġfun Ġapp Login () Ġ{ ĊĠĠĠ Ġvar Ġcurrent Activity : ĠActivity ? Ġ= ĠgetCurrent Activity () ĊĠĠĠ Ġm Kw ai Open Sdk Auth ?. send Auth Req To Kw ai ( current Activity , ĠSTATE , ĊĠĠĠĠĠ ĠK w ai Constants . Login Type . APP , Ġm Kw ai Auth Listener , ĊĠĠĠĠĠ Ġplatform List . to Typed Array ()) ĊĠ Ġ} ĊĊĠ Ġ// Ġh 5 è°ĥ èµ· çĻ»å½ķ ĊĠ Ġfun Ġh 5 Login () Ġ{ ĊĠĠĠ Ġvar Ġcurrent Activity : ĠActivity ? Ġ= ĠgetCurrent Activity () ĊĠĠĠ Ġm Kw ai Open Sdk Auth ?. send Auth Req To Kw ai ( current Activity , ĠSTATE , ĊĠĠĠĠĠ ĠK w ai Constants . Login Type . H 5 , Ġm Kw ai Auth Listener , ĊĠĠĠĠĠ Ġplatform List . to Typed Array ()) ĊĠ Ġ} Ċ } ĊĊĊ