阅读 60

react native 接入微信登陆(Android)

  • 官方地址:

  • 添加依赖 api ‘com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+‘

  • 包名.wxapi.WXEntryActivity.java

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        IWXAPI wxapi = WXAPIFactory.createWXAPI(this, "APP_ID", false);
        wxapi.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {
            String code = ((SendAuth.Resp) baseResp).code;
            String url = "https://api.weixin.qq.com/sns/oauth2/access_token" +
                    "?appid=wx3b302e27c2439dbf&secret=cf886e9fc9977a8d4b5e0be1a66a2851&code="
                    + code + "&grant_type=authorization_code";
            Request request = new Request.Builder().url(url).get().build();
            new OkHttpClient().newCall(request).enqueue(new Callback() {
                @Override
                @EverythingIsNonNull
                public void onFailure(Call call, IOException e) {
                    MyModule.promise.reject(new Exception("操作失败"));
                    finish();
                }

                @Override
                @EverythingIsNonNull
                public void onResponse(Call call, Response response) throws IOException {
                    Map map = new Gson().fromJson(Objects.requireNonNull(response.body()).string(), Map.class);
                    WritableMap writableMap = Arguments.createMap();
                    writableMap.putString("openid", Objects.requireNonNull(map.get("openid")).toString());
                    MyModule.promise.resolve(writableMap);
                    finish();
                }
            });
        } else {
            MyModule.promise.reject(new Exception("操作失败"));
            finish();
        }
    }

}
  • 注册Activity

  • MainActivity.java
public class MainActivity extends ReactActivity {
    static IWXAPI api;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, "APP_ID", true);
        api.registerApp("APP_ID");

    }

}
  • 登陆代码
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
MainActivity.api.sendReq(req);
  • 其他参考QQ登陆

原文:https://www.cnblogs.com/stefzi/p/13278291.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐