From c5bf501d8b507d1e3e79541e7ac9b45910860b4d Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Wed, 29 May 2019 16:17:07 +0800 Subject: [PATCH] 添加新功能 --- app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java | 155 +++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 130 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java b/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java index 561afbd..315aa16 100644 --- a/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java +++ b/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java @@ -4,18 +4,18 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; -import android.widget.Toast; import com.lzy.okgo.cache.CacheMode; import com.moral.andbrickslib.utils.GsonUtil; import com.moral.yunfushao.MainActivity; +import com.moral.yunfushao.MainApp; import com.moral.yunfushao.common.WXConstants; import com.moral.yunfushao.httputils.HttpCallBack; import com.moral.yunfushao.httputils.WXHttpUtil; import com.moral.yunfushao.model.User; +import com.moral.yunfushao.utils.T; import com.moral.yunfushao.wxapi.data.AccessTokenBean; import com.moral.yunfushao.wxapi.data.WXUserBean; -import com.tencent.mm.opensdk.constants.ConstantsAPI; import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelbase.BaseResp; import com.tencent.mm.opensdk.modelmsg.SendAuth; @@ -40,6 +40,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID, false); + api.registerApp(WXConstants.APP_ID); + onNewIntent(getIntent()); } @Override @@ -51,28 +53,27 @@ @Override public void onReq(BaseReq baseReq) { - switch (baseReq.getType()) { - case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX: - goToGetMsg(); - break; - case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: - goToShowMsg((ShowMessageFromWX.Req) baseReq); - break; - default: - break; - } +// switch (baseReq.getType()) { +// case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX: +// goToGetMsg(); +// break; +// case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: +// System.out.println("chenqi create WXEntryActivity COMMAND_SHOWMESSAGE_FROM_WX"); +// goToShowMsg((ShowMessageFromWX.Req) baseReq); +// break; +// default: +// break; +// } } @Override public void onResp(BaseResp baseResp) { String result; - - Toast.makeText(this, "baseresp.getType = " + baseResp.getType(), Toast.LENGTH_SHORT).show(); - + System.out.println("chenqi create WXEntryActivity " + baseResp.errCode); switch (baseResp.errCode) { case BaseResp.ErrCode.ERR_OK: code = ((SendAuth.Resp) baseResp).code; - result = "������������"; + result = ""; checkWXLogin(); //������������ break; @@ -86,28 +87,101 @@ result = "���������������"; break; default: - result = "������������"; + result = ""; break; } + if (result.equals("")) { + return; + } + T.show(result); + } - Toast.makeText(this, result, Toast.LENGTH_LONG).show(); + /** + * ������������������������ + */ + private void checkEffective(final String access_token, String openid) { + String url = "https://api.weixin.qq.com/sns/auth?access_token=" + access_token + "&openid=" + openid; + System.out.println("chenqi ---- checkEffective"); + WXHttpUtil.doGet(url, CacheMode.DEFAULT, new HttpCallBack() { + @Override + public void onSuccess(String res, String msg) { + AccessTokenBean accessTokenBean = GsonUtil.toObj(msg, AccessTokenBean.class); + if (accessTokenBean.getErrcode() == 0) { + loginSuccess(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + } else { + refreshToken(accessTokenBean.getRefresh_token()); + } + } + + @Override + public void showLoadingDialog() { + + } + + @Override + public void onFail(int errno, String s) { + loginFailed(); + } + }); + } + + /** + * ������������������������������ + * + * @param refresh_tocken + */ + private void refreshToken(String refresh_tocken) { + String url = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" + WXConstants.APP_ID + "&grant_type=refresh_token&refresh_token=" + refresh_tocken; + WXHttpUtil.doGet(url, CacheMode.DEFAULT, new HttpCallBack() { + @Override + public void onSuccess(String res, String msg) { + AccessTokenBean accessTokenBean = GsonUtil.toObj(msg, AccessTokenBean.class); + if (accessTokenBean.getErrcode() == 40030) { + loginFailed(); + } else { + loginSuccess(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + } + } + + @Override + public void showLoadingDialog() { + + } + + @Override + public void onFail(int errno, String s) { + loginFailed(); + } + }); } /** * ������������������������ */ private void checkWXLogin() { - String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid= " + + String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + WXConstants.APP_ID + - "&secret=" + "������������" + "&code=" + + "&secret=" + WXConstants.SECRET + "&code=" + WXEntryActivity.code + "&grant_type=authorization_code"; + System.out.println("chenqi ---- checkWXLogin"); WXHttpUtil.doGet(url, CacheMode.DEFAULT, new HttpCallBack() { @Override public void onSuccess(String res, String msg) { + System.out.println("chenqi ---- onSuccess"); AccessTokenBean accessTokenBean = GsonUtil.toObj(msg, AccessTokenBean.class); - if (accessTokenBean.getAccess_token() == null && accessTokenBean.getOpenid() == null) - getUserInfor(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + System.out.println("chenqi ---- refreshToken" + accessTokenBean.getOpenid() + accessTokenBean.getAccess_token()); + if (accessTokenBean.getErrcode() == 40029) { + //������������ + loginFailed(); + return; + } else if (accessTokenBean.getErrcode() == 40163) { + //������������������code ��������������������� + loginSuccess(); + } + if (accessTokenBean.getAccess_token() != null && accessTokenBean.getOpenid() != null) { + checkEffective(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + } } @Override @@ -117,6 +191,7 @@ @Override public void onFail(int errno, String s) { + loginFailed(); } }); } @@ -137,8 +212,18 @@ public void onSuccess(String res, String msg) { WXUserBean bean = new WXUserBean(); User user = new User(); - user.set_id(bean.getOpenid()); - user.setNickname(bean.getNickname()); + if (bean.getErrcode() == 40003) { + MainApp.theApp.userId = "null"; + user.set_id(bean.getOpenid()); + user.setNickname(MainApp.theApp.userId); + user.setLogin_type(2); + } else { + MainApp.theApp.userId = bean.getNickname(); + user.set_id(bean.getOpenid()); + user.setNickname(bean.getNickname()); + user.setLogin_type(2); + } + MainApp.theApp.sharedPreferencesUtil.saveLoginInfo(user); } @Override @@ -148,11 +233,31 @@ @Override public void onFail(int errno, String s) { - + loginFailed(); } }); } + + private void loginFailed() { + finish(); + T.show("������������"); + } + + /** + * ������������ + * + * @param strings + */ + private void loginSuccess(String... strings) { + System.out.println("chenqi ---- loginSuccess" + strings.length); + //��������������������� + Intent intent = new Intent(getApplication(), MainActivity.class); + getApplication().startActivity(intent); + getUserInfor(strings[0], strings[1]); + finish(); + } + private void goToGetMsg() { Intent intent = new Intent(this, MainActivity.class); intent.putExtras(getIntent()); -- Gitblit v1.8.0