安卓实现扫码登录

This commit is contained in:
Norcy 2024-08-19 15:22:09 +08:00
parent a325e153c8
commit f356067265

View File

@ -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;