Android微信登录接入

导入包

compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

 

点击微信登录的按钮后,调用该方法,该方法会拉起微信登录确认页面

private void regToWx() {    IWXAPI api;    api = WXAPIFactory.createWXAPI(this, WX_APP_ID, true);    api.registerApp(WX_APP_ID);    SendAuth.Req req = new SendAuth.Req();    //授权读取用户信息    req.scope = "snsapi_userinfo";    //自定义信息    req.state = "wx_login";    //向微信发送请求    api.sendReq(req);}

 

在你的包名下,建一个名为"wxapi"的包,在包中建一个名为WXEntryActivity的类,继承Activity,实现IWXAPIEventHandler接口,WXEntryActivity不需要你去启动,微信会帮你启动。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //注册API
    api = WXAPIFactory.createWXAPI(this, WX_APP_ID);
    api.handleIntent(getIntent(), this);
}

<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.NoDisplay" />

在微信登录确认页面点击了确定后,微信会在onResp方法中会返回给你code,接着拿着code去发起url请求openId等参数,这里的做法是直接把code发到服务端上去,让服务端去请求openId,这样就不需要下发App_Secret

    @Override
    public void onResp(BaseResp resp) {
        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                SendAuth.Resp sendResp = (SendAuth.Resp) resp;
                code = sendResp.code;
                Toast.makeText(this, "code---->" + code, Toast.LENGTH_SHORT).show();           
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                break;
            default:
                break;
        }
    }


ps:测试版的签名没用,要用发布版的签名,并且要用发布版进行调试,如果code传回来的是空,多半是签名错误,建议用官方的签名生成工具:

https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值