摘要:今天写了一些关于通过微信进行第三方登录的东西。。。还有申请微信审核。。。(啥都要审核,我好方),qq开放平台个人资料审核过了,然后还得要过app审核才能拿到appid。。。(淦)
代码:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler { private static final int RETURN_MSG_TYPE_LOGIN = 1; private static final int RETURN_MSG_TYPE_SHARE = 2; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //如果没回调onResp,八成是这句没有写 MyApp.mWxApi.handleIntent(getIntent(), this); } // 微信发送请求到第三方应用时,会回调到该方法 @Override public void onReq(BaseReq req) { } // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 //app发送消息给微信,处理返回消息的回调 @Override public void onResp(BaseResp resp) { LogUtils.sf(resp.errStr); LogUtils.sf("错误码 : " + resp.errCode + ""); switch (resp.errCode) { case BaseResp.ErrCode.ERR_AUTH_DENIED: case BaseResp.ErrCode.ERR_USER_CANCEL: if (RETURN_MSG_TYPE_SHARE == resp.getType()) UIUtils.showToast("分享失败"); else UIUtils.showToast("登录失败"); break; case BaseResp.ErrCode.ERR_OK: switch (resp.getType()) { case RETURN_MSG_TYPE_LOGIN: //拿到了微信返回的code,立马再去请求access_token String code = ((SendAuth.Resp) resp).code; LogUtils.sf("code = " + code); //就在这个地方,用网络库什么的或者自己封的网络api,发请求去咯,注意是get请求 break; case RETURN_MSG_TYPE_SHARE: UIUtils.showToast("微信分享成功"); finish(); break; } break; } } }
开始时调用函数:
@Override public void onCreate() { super.onCreate(); registToWX(); } private void registToWX() { mWxApi = WXAPIFactory.createWXAPI(this, AppConst.WEIXIN.APP_ID, false); // 将该app注册到微信 mWxApi.registerApp(AppConst.WEIXIN.APP_ID); }
点击事件:
public void wxLogin() { if (!MyApp.mWxApi.isWXAppInstalled()) { UIUtils.showToast("您还未安装微信客户端"); return; } final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "diandi_wx_login"; MyApp.mWxApi.sendReq(req); }
其实和qq登录大同小异,等过了审核一并测试。
后面要实现取用户唯一openid,存入数据库,然后回调进行登录验证(淦)。