egret微端安卓接入微信登录

前言:

1.egret版本5.25

2.微端版本0.1.18

3.接入时间2019/12/30

4.默认你的app已经审核通过,有了自己的appId

本文主要讲解接入egret安卓微端接入微信登录的一些坑吧,主要思路以微信开放平台官方文档为主,根据官方文档,难理解的地方进行讲解。

内容:

1.熟读官方文档,熟读官方文档,每个人都是踩着坑过来的,即使没有这篇文章,你也可以自己弄出来

2.官方登录流程https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.htm

(1)通俗的讲,就是客户端要做的事就是为了拿到一个code值,拿到code值之后交给你的服务端。这就是客户端要做的事。

关于之后通过code得到access_token,这是服务端做的。

(2)所以现在我们知道了我们客户端需要做的事了,就是拿到一个code

3.怎么拿到code?

(1)官方安卓接入流程https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html

(2)总的来说,你要在安卓层写两个函数,官方都给你写好了,一个是调起微信登录的函数,一个是接收微信给你code的函数,当你调起微信,点击同意后,微信会自动回调你的接收code的函数

(3)要写微信的代码,就要微信的第三方包,怎么导入到安卓项目呢,官方文档也说了

1

但是这里作为一个小白来就是个坑了,你发现一直报错,如果这段代码你复制过去后报错,那你就换种写法,把api换成

complite

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

(4)其他要做的步骤自己看文档,我就不说了

(5)然后就写那两个函数嘛,一个调起微信登录,一个接受微信的回调,两个函数都是文档里复制过来的

(6)调起微信的函数

你把这个函数写到MainActivity这个类中去

//调起微信登录
private void loginToWx() {
    //login(SHARE_MEDIA.WEIXIN);
    SendAuth.Req req = new SendAuth.Req();
    //授权读取用户信息
    req.scope = "snsapi_userinfo";
    //自定义信息
    req.state = "wechat_sdk_demo_test";
    //向微信发送请求
    api.sendReq(req);
}

它就是new了一个对象嘛,然后通过api发送了过去,但是这个api哪里来的呢,文档也说了,要调用微信的相关接口的时候必须先初始化嘛,那我们就在MainActivity的onCreate的函数中去写如下代码

// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(Constants.APP_ID);

别忘了在MainActivity类中定义一个变量

// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;

有的同学会问Constants.APP_ID这个是什么,这个是个静态变量,就是你app的appid,你可以直接写字符串也行,或者你在你的MainActivity下写一个Constants类嘛,类里定义一个静态变量

这样调起微信的就写好了嘛

(7)写一个接收微信回调的函数

据官方文档,我们要在MainActivity文件夹下面新建一个wxapi的文件夹,在这个文件夹中新建一个文档规定的那个类,然后这个类里写上函数就好了,

@Override
public void onResp(BaseResp resp) {
    int errorCode = resp.errCode;
    String code = "";
    switch (errorCode) {
        case BaseResp.ErrCode.ERR_OK:
            //用户同意
            code = ((SendAuth.Resp) resp).code;
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED:
            //用户拒绝
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL:
            //用户取消
            break;
        default:
            break;
    }
    finish();
}

(8)假如一切正常,你也收到了回调函数,得到了code,那么你怎么将这个code传回到js层呢?

我们只能通过MainActivity中的  launcher  这个对象就发送安卓层的字符串到js层,那你就讲code传到MainActivity中来,再通过

launcher  传到js层就好了

(9)这样就万事大吉了,奥来给

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值