Android微信登录

微信登录

当我们做第三方微信登录时可供参考

1.首先我们做微信登录时
下载 SDK 及 API 文档 Android Studio 环境下:
在 build.gradle 文件中,添加如下依赖即可:

//导入依赖
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

1、2在我们的清单文件中添加微信登录所需的全限

<uses-permission android:name="android.permission.INTERNET" /> 
<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2.APP_ID最好是存放在我们的变量类是方便我们调用,做微信其他功能时也方便使用

public class Constants {
    //app_id
    public static final String APP_ID = "我们的APP_ID";
    public static IWXAPI wx_api;
}

3.初始化当然是已经拿到APP_ID的时候,初始化操作也可以放在Application里

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

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

4.接下来到我们点击登录了,当我们登录时我们的我们的第三方app端会带着我们的APP_ID、包名、签名信息去到微信客户端,微信客户端会带着这些信息去到微信服务器校验注册时的信息,校验成功通知微信客户端唤起微信授权页。

//发送请求唤起收起授权页
public void wake() {
    // send oauth request
    final SendAuth.Req req = new SendAuth.Req();
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_demo_test";
    Constants.wx_api.sendReq(req);
}

5,我们要创建微信回调类接收登录授权页登陆状态,在你的包下创建包名为:wxapi、类名为:WXEntryActivity,!包名类名必须相同,实现IWXAPIEventHandle从写onReq、onResp方法,在onResp方法中处理回调信息

在这里插入图片描述
在这里插入图片描述
5、2.创建完后在我们的清单文件application中注册我们的WXEntryActivity类,exported必须为true

<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:taskAffinity="!放app包名"
    android:theme="@android:style/Theme.NoDisplay" />

5、3.接下来在我们的WXEntryActivity类中接收,在onResp方法中处理用户是否授权

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //对象传递给 IWXAPI 接口的 handleIntent 方法
    Constants.wx_api.handleIntent(getIntent(), this);
}
@Override
public void onResp(BaseResp resp) {
    switch (resp.errCode) {
        case BaseResp.ErrCode.ERR_OK:
            Log.i("WXTest", "onResp OK");
            if (resp instanceof SendAuth.Resp) {
                SendAuth.Resp newResp = (SendAuth.Resp) resp;
                //获取微信传回的code
                String code = newResp.code;
      !!!到这我们就获得code值了,可以进行下面自己服务器的操作了
                }
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL:
            Log.i("WXTest", "onResp ERR_USER_CANCEL ");
            //发送取消
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED:
            Log.i("WXTest", "onResp ERR_AUTH_DENIED");
            //发送被拒绝
            break;
        default:
            Log.i("WXTest", "onResp default errCode " + resp.errCode);
            //发送返回
            break;
    }
    finish();
}

到这里就结束了。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值