Android 集成微信sdk 实现微信登录
实现微信登录可划分为三步:
1.首先获取微信授权,微信授权成功后会返回一个code到WXEntryActivity中的onResp方法中去
2.通过上一步获取到的code来请求微信接口获取到accessToken和openId。
请求接口:
https://api.weixin.qq.com/sns/oauth2/access_token? appid=AppID&secret=AppSecret&code=code&grant_type= authorization_code"
3.再通过第二部获取到的accessToken和openId来请求另一个微信接口从而获取到微信的用户信息来实现登录功能
具体步骤如下:
1.在Android studio中添加依赖 :
implementation compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
或
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
2.在AndroidManifest.xml文件中添加所需要的权限:
3.在项目的包名下创建名为wxapi包,然后再在此包下创建名为WXEntryActivity并继承自Activity,再实现IWXAPIEventHandler接口重写onRep和onResp方法(此activity是一个比叫特殊的类没有布局文件,微信所有的回调都是通过这个activity来实,没有设置布局文件,通常设置一个透明的主题,它的任务干完后就直接finish掉)。最后,还需要在AndroidMnifest.xml中注册activity添加代码如下:
4.准备工作做完下面开始实现微信登录:
首先在WXEntryActivity的onCreate方法中做初始化工作
//通过WXAPIFactory工厂获取IWXApI的示例api = WXAPIFactory.createWXAPI(this, APP_ID, true);//将应用的appid注册到微信api.registerApp(APP_ID);api.handleIntent(this.getIntent(), this);
然后处理微信授权后的回调
@Override
public void onResp(BaseResp baseResp) {
switch (baseResp.errCode) {case BaseResp.ErrCode.ERR_OK: {
if (baseResp instanceof SendAuth.Resp) {SendAuth.Resp newResp = (SendAuth.Resp) baseResp;
//获取微信返回的code
final String code = newResp.code;
Log.e(TAG, "微信返回的CODE: " + code);break;
}case BaseResp.ErrCode.ERR_USER_CANCEL: {//用户取消登录
break;
}case BaseResp.ErrCode.ERR_BAN: {//如果点击微信登录按钮没有调起微信授权界面,并且一直回调到这里,那很可能是手机问题,可以尝试重启手机
break;
}default:{
break;
}}
finish();
}
5.最后在上面的集成工作完成后后就可以在起它的activity中发起微信登录的请求,执行代码如下:
api = WXAPIFactory.createWXAPI(getActivity(), Constants.APP_ID, false); api.registerApp(APP_ID); if (api != null && api.isWXAppInstalled()) {SendAuth.Req req = new SendAuth.Req(); /* 授权作用域(scope)代表用户授权给第三方的接口权限,第三方应用需要向微信开放平台申请使用相应scope的权限后, 使用文档所述方式让用户进行授权,经过用户授权,获取到相应access_token后方可对接口进行调用。 如获取用户个人信息则填写snsapi_userinfo */ req.scope = "snsapi_userinfo"; /* 用于保持请求和回调的状态,授权请求后原样带回给第三方。 该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验 */ req.state = "wechat_sdk_demo"; api.sendReq(req); }else {Toast.makeText(getActivity(), "用户未安装微信", Toast.LENGTH_SHORT).show(); }
微信授权成功拿到code后就可通过上面提到的接口发送get请求获取用户信息来实现登录功能了。
代码中出现的AppID和AppSecret是在微信开放平台申请微信登录获取的
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
