diff --git a/android/src/main/java/com/wechatlib/WeChatLibModule.java b/android/src/main/java/com/wechatlib/WeChatLibModule.java index 3663186..8a00f2b 100644 --- a/android/src/main/java/com/wechatlib/WeChatLibModule.java +++ b/android/src/main/java/com/wechatlib/WeChatLibModule.java @@ -6,6 +6,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Environment; +import android.util.Base64; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; @@ -25,11 +26,17 @@ import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; +import com.facebook.react.modules.core.RCTNativeAppEventEmitter; +import com.tencent.mm.opensdk.diffdev.DiffDevOAuthFactory; +import com.tencent.mm.opensdk.diffdev.IDiffDevOAuth; +import com.tencent.mm.opensdk.diffdev.OAuthErrCode; +import com.tencent.mm.opensdk.diffdev.OAuthListener; import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelbase.BaseResp; import com.tencent.mm.opensdk.modelbiz.ChooseCardFromWXCardPackage; @@ -149,6 +156,42 @@ public class WeChatLibModule extends ReactContextBaseJavaModule implements IWXAP } } + private void sendEvent(ReactContext reactContext, String eventName, WritableMap params) { + reactContext.getJSModule(RCTNativeAppEventEmitter.class).emit(eventName, params); + } + + @ReactMethod + public void authByScan(String appid, String nonceStr, String timeStamp, String scope, String signature, String schemeData, final Callback callback) { + if (api == null) { + callback.invoke(NOT_REGISTERED); + return; + } + + IDiffDevOAuth oauth = DiffDevOAuthFactory.getDiffDevOAuth(); + oauth.stopAuth(); + oauth.auth(appid, scope, nonceStr, timeStamp, signature, new OAuthListener() { + @Override + public void onAuthGotQrcode(String var1, byte[] var2){ + WritableMap map = Arguments.createMap(); + String base64String = Base64.encodeToString(var2, Base64.DEFAULT); + map.putString("qrcode", base64String); + sendEvent(getReactApplicationContext(), "onAuthGotQrcode", map); + } + + @Override + public void onQrcodeScanned() { + + } + @Override + public void onAuthFinish(OAuthErrCode var1, String var2){ + WritableMap map = Arguments.createMap(); + map.putString("authCode", var2); + map.putInt("errCode", var1.getCode()); + callback.invoke(map); + } + }); + } + @ReactMethod public void registerApp(String appid, String universalLink, Callback callback) { this.appId = appid;