目前第三方登陆app需求很多了。在这里做一下微信app的登陆。直说其中几个功能点。
https://open.weixin.qq.com,首先去微信官网去注册app,然后下载demo。获取libammsdk.jar.
在进行第三方登陆的页面进行如下的初始化:
// Constants.APP_ID 是在官网注册app时,官网分配的appid api = WXAPIFactory.createWXAPI(this, Constants.APP_ID, true); api.registerApp(Constants.APP_ID);
其中api类型为IWXAPI。
然后在点击微信登陆之处做如下操作。
@OnClick({ R.id.weixinlogin }) public void weixinLogin(View view) { //login(SHARE_MEDIA.WEIXIN); SendAuth.Req req = new SendAuth.Req(); //授权读取用户信息 req.scope = "snsapi_userinfo"; //自定义信息 req.state = "wechat_sdk_demo_test"; //向微信发送请求 api.sendReq(req); }
这是向微信发出请求,然后在你的项目的pkg name的目录下,建立一个wxapi的文件夹,里面建立一个WXEntryActivity.java的文件。他必须实现IWXAPIEventHandler这个接口,这个页面的路径一定要保证正确,微信会把请求返回结果,返回到这个界面。
public void onResp(BaseResp resp) { int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = R.string.errcode_success; String code = ((SendAuth.Resp) resp).code; String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + Constants.APP_ID + "&secret=" + Constants.APP_SECRET + "&code=" + code + "&grant_type=authorization_code"; HttpService.getWxToken(url, new NetworkInterfaceListener() { @Override public void onSuccess(BaseBean data) { // TODO Auto-generated method stub if(data != null) { Message msg = mHandler.obtainMessage(); msg.what = 1; msg.obj = data; mHandler.sendMessage(msg); } } @Override public void onError(IOException e) { // TODO Auto-generated method stub } }); break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = R.string.errcode_cancel; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = R.string.errcode_deny; break; default: result = R.string.errcode_unknown; break; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); }
在这个函数里面当返回err_ok时,通过指定的url通过get方法获取token,然后根据token可以获取个人信息之类的东西。其中appid和appsecret都是注册的时候官方分配的。这个关键的地方是实现WXEntryActivity.java这个文件,要在指定目录实现。可以在这个文件中做一个loading框不停的旋转。通过获取token之后获取个人信息,然后再登陆自己项目的第三方登陆接口。整个流程就是这样。