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 | 154 +++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 129 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 f29b7c7..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;
@@ -41,6 +41,7 @@
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID, false);
api.registerApp(WXConstants.APP_ID);
+ onNewIntent(getIntent());
}
@Override
@@ -52,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;
@@ -87,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
@@ -118,6 +191,7 @@
@Override
public void onFail(int errno, String s) {
+ loginFailed();
}
});
}
@@ -138,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
@@ -149,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