始终还是需要做一个微信登陆的功能。不管心里多么个不愿意还是得从了老大的。网上查了很多资料没有一个完整的所以我这个菜鸟就整合一下,废话少说切入正题
1,第一步去微信开放平台注册一个账号,为了各位方便链接附上,然后创建一个移动应用, http://open.weixin.qq.com/
这里有个需要注意的是这个应用签名是需要下载一个微信提供的签名APP然后输入你的包名生成的签名
这是微信提供的微信签名APP https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android221cbf.apk
2,应用创建了之后通过审核就可以看到这个页面,必须要开通微信登陆的功能
现在可以开始下载微信开发包了
https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Android2_SDK238f8d.zip
找到 libammsdk.jar复制到你项目的libs里面
接下来在你的项目里面创建一个wxapi的包里面创建一个继承Activity的WXEntryActivity类用来接受登陆返回结果,这个微信要求必须要写的。而且要放在你创建应用填的那个包下面。
WXEntryActivity这个类因为要集成Actiity所以要在ManiFest里面注册一下否则会有问题
现在可以开始写代码了。
AppId就是你自己创建应用的ID
IWXAPI api = WXAPIFactory.createWXAPI(context, AppId, false);
api.registerApp(AppId);
初始化完成了之后就可以写跳转到微信的的代码了
final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "fkmao_wx_login";
ExampleApplication.api.sendReq(req);
到这一步如果没有出问题就应该跳转到微信了
点击确认登录了之后开始写的WXEntryActivity类就可以来接收登录的结果了
首先WXEntryActivity要实现IWXAPIEventHandler这个接口,因为他有两个方法其中一个是接收返回结果的
@Override
public void onReq(BaseReq arg0) {
// TODO Auto-generated method stub
switch (arg0.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
break;
default:
break;
}
}
//返回微信登录的结果
@Override
public void onResp( BaseResp arg0) {
// TODO Auto-generated method stub
int result = 0;
switch (arg0.errCode) {
case BaseResp.ErrCode.ERR_OK:
//登录成功获取到微信的Code
String weixinCode = ((SendAuth.Resp)arg0).code;
result = R.string.errcode_success;
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;
}
}