From f35606726576761f942bc6ec75889582f7e8a553 Mon Sep 17 00:00:00 2001 From: Norcy Date: Mon, 19 Aug 2024 15:22:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=89=E5=8D=93=E5=AE=9E=E7=8E=B0=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/wechatlib/WeChatLibModule.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) 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;