一般APP的登录都有使用微信登录、接第三方登录,有两种方法:
1、接第三方封装库,里面包含了目前主流的第三方登录
2、自己接登录SDK
这里简单的封装一下微信登录的回调activity:
一、创建SDKWXEntryActivity
public abstract class SDKWXEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
private static final int RETURN_MSG_TYPE_LOGIN = 1;//登录
private static final int RETURN_MSG_TYPE_SHARE = 2;//分享
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, SDKConfig.getWeixinAppID(), false);
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp resp) {
if (RETURN_MSG_TYPE_SHARE == resp.getType()) {//分享
handleRespShare(resp);
} else if (RETURN_MSG_TYPE_LOGIN == resp.getType()) {//登录
handleRespLogin((SendAuth.Resp) resp);
}
}
private void handleRespLogin(SendAuth.Resp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
authSucceed(resp.code);
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
authCancel();
break;
default:
authFail(resp.errCode);
break;
}
finish();
}
private void handleRespShare(BaseResp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
shareSucceed();
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
shareCancel();
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
default:
shareFail(resp.errCode);
break;
}
finish();
}
//登录授权成功
public abstract void authSucceed(String code);
//取消登录授权
public abstract void authCancel();
//登录授权失败
public abstract void authFail(int code);
//分享成功
public abstract void shareSucceed();
//取消分享
public abstract void shareCancel();
//分享失败
public abstract void shareFail(int code) ;
二、创建ExtWXEntryActivity
public abstract class ExtWXEntryActivity extends SDKWXEntryActivity {
@Override
public void authSucceed(String code) {
super.authSucceed(code);
//TODO 发送RxBus,通知请求微信登录接口
RxBus.getDefault().send(Constants.RxBus.CODE_REQUEST_WX_LOGIN, code);
}
@Override
public void authCancel() {
super.authCancel();
}
@Override
public void authFail(int code) {
super.authFail(code);
}
@Override
public void shareSucceed() {
super.shareSucceed();
//TODO 发送RxBus,通知分享微信成功
RxBus.getDefault().send(Constants.RxBus.CODE_WX_SHARE_SUCCESS);
}
@Override
public void shareCancel() {
super.shareCancel();
}
@Override
public void shareFail(int code) {
super.shareFail(code);
}
}
三、创建WXEntryActivity,可多马甲包使用,不同包下创建此activity即可(如包名: cn.com.test.wxapi)
/**
* jy
* TODO:微信登录回调页
*/
public class WXEntryActivity extends ExtWXEntryActivity {
}