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