mirror of
https://github.com/little-snow-fox/react-native-wechat-lib.git
synced 2025-12-06 15:26:49 +08:00
安卓实现扫码登录
This commit is contained in:
parent
a325e153c8
commit
f356067265
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user