荐币使用微信原生api 实现第三方登录
喇叭资讯却是使用的是友盟实现第三方登录的
1、参考 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Authorized_API_call_UnionID.html
2、注册到微信
Application中onCreate()方法中注册:
//第二个参数是指你应用在微信开放平台上的AppID
mWxApi = WXAPIFactory.createWXAPI(this, ThirdPartKeyConst.WEIXIN_APP_ID, false);
// 将该app注册到微信
mWxApi.registerApp(ThirdPartKeyConst.WEIXIN_APP_ID);
3、在app的包名(注意指的是application的名字,因为有时候application和packagename不一致)目录下新建一个wxapi目录,然后在此目录下新建WXEntryActivity.java文件,如下,app的包名为carjob.com.cn,新建的wxapi目录如下。
(注意:一定是包名目录下新建,不要在其他目录新建,否则WXEntryActivity.java里的public void onResp(BaseResp resp)方法不会被调用)
WXEntryActivity继承Activity,实现IWXAPIEventHandler,并重写protected void onNewIntent(Intent intent)、public void onReq(BaseReq arg0)、public void onResp(BaseResp resp)方法
4、发送微信登录的请求
//先判断是否安装微信APP,按照微信的说法,目前移动应用上微信登录只提供原生的登录方式,需要用户安装微信客户端才能配合使用。
if (!JavaUtils.isWeixinAvilible(this)) {
showToast("您还未安装微信客户端");
return;
}
showProgressDialog("正在登录...");
//微信登录
SendAuth.Req req = new SendAuth.Req();
((SendAuth.Req) req).scope = "snsapi_userinfo";
req.state = "diandi_wx_login";
//像微信发送请求
LApplication.getInstance().mWxApi.sendReq(req);
请求成功后,可拉起微信的授权登录页面。
用户点击“确认登录”后,SDK通过SendAuth的Resp返回数据给调用方(即app),此时WXEntryActivity中的public void onResp(BaseResp resp)方法被调用(微信、朋友圈分享成功后,此方法同样会被调用),微信登录的返回值说明如下。这里app可以做相关的处理,见WXEntryActivity.java文件中的处理,取code为下一步获取access_token和openid等信息做准备。
5、通过code获取access_token
获取上一步中的code后,调用以下接口获取access_token,官方指出用Get方式请求。
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
请求参数说明:
appid:应用唯一标识,在微信开放平台提交应用审核通过后获得。
secret:应用密钥AppSecret,在微信开放平台提交应用审核通过后获得。
code:填写第一步获取的code参数。
grant_type:填authorization_code。
6、获得access_token、openid后,app就可以根据自己的规则与互自己的server进行交互。