From 0e7dd8919ae2811063057f18a4db4156c771448a Mon Sep 17 00:00:00 2001 From: 陈奇 <1650699704@qq.com> Date: Fri, 07 Dec 2018 16:54:04 +0800 Subject: [PATCH] [*]添加了微信登陆 --- app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java | 103 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 92 insertions(+), 11 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..9a863cb 100644 --- a/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java +++ b/app/src/main/java/com/moral/yunfushao/wxapi/WXEntryActivity.java @@ -4,15 +4,16 @@ 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; @@ -40,11 +41,14 @@ 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 protected void onNewIntent(Intent intent) { super.onNewIntent(intent); + System.out.println("chenqi onNewIntent"); setIntent(intent); api.handleIntent(intent, this); } @@ -56,6 +60,7 @@ goToGetMsg(); break; case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX: + System.out.println("chenqi create WXEntryActivity COMMAND_SHOWMESSAGE_FROM_WX"); goToShowMsg((ShowMessageFromWX.Req) baseReq); break; default: @@ -66,9 +71,7 @@ @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; @@ -86,28 +89,94 @@ 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; + 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) { + T.show("������������"); + } + }); + } + + /** + * ��������������������������� + * + * @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) { + T.show("������������"); + } else { + loginSuccess(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + } + } + + @Override + public void showLoadingDialog() { + + } + + @Override + public void onFail(int errno, String s) { + T.show("������������"); + } + }); } /** * ������������������������ */ 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"; WXHttpUtil.doGet(url, CacheMode.DEFAULT, new HttpCallBack() { @Override public void onSuccess(String res, String msg) { AccessTokenBean accessTokenBean = GsonUtil.toObj(msg, AccessTokenBean.class); - if (accessTokenBean.getAccess_token() == null && accessTokenBean.getOpenid() == null) - getUserInfor(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + if (accessTokenBean.getErrcode() == 40029) { + //������������ + T.show("������������"); + return; + } + if (accessTokenBean.getAccess_token() != null && accessTokenBean.getOpenid() != null) { + checkEffective(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid()); + } } @Override @@ -117,6 +186,7 @@ @Override public void onFail(int errno, String s) { + T.show("������������"); } }); } @@ -136,9 +206,12 @@ @Override public void onSuccess(String res, String msg) { WXUserBean bean = new WXUserBean(); + MainApp.theApp.userId = bean.getNickname(); User user = new User(); user.set_id(bean.getOpenid()); user.setNickname(bean.getNickname()); + user.setLogin_type(2); + MainApp.theApp.sharedPreferencesUtil.saveLoginInfo(user); } @Override @@ -148,11 +221,19 @@ @Override public void onFail(int errno, String s) { - + T.show("������������"); } }); } + private void loginSuccess(String... strings) { + //��������������������� + Intent intent = new Intent(WXEntryActivity.this, MainActivity.class); + WXEntryActivity.this.startActivity(intent); + finish(); + getUserInfor(strings[0], strings[1]); + } + private void goToGetMsg() { Intent intent = new Intent(this, MainActivity.class); intent.putExtras(getIntent()); -- Gitblit v1.8.0