WXEntryActivity.java
6.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.lotus.town.wxapi;
import android.os.Bundle;
import android.os.Message;
import android.support.annotation.Nullable;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.lotus.town.BaseActivity;
import com.lotus.town.event.SharedWXEvent;
import com.lotus.town.event.WxLoginEvent;
import com.lotus.town.scManager;
import com.lotus.town.service.login.LoginManager;
import com.lotus.town.uiManager;
import com.lotus.town.utils.SharedPrefConfig;
import com.lotus.town.utils.UIUtils;
import com.sdk.Sdk;
import com.sdk.http.HttpCallback;
import com.sdk.http.HttpRequest;
import com.sdk.http.HttpResponse;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import org.greenrobot.eventbus.EventBus;
public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
private static final int RETURN_MSG_TYPE_LOGIN = 1;
private static final int RETURN_MSG_TYPE_SHARE = 2;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//如果没回调onResp,八成是这句没有写
WxManager.mWxApi.handleIntent(getIntent(), this);
}
// 微信发送请求到第三方应用时,会回调到该方法
@Override
public void onReq(BaseReq req) {
}
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
//app发送消息给微信,处理返回消息的回调
@Override
public void onResp(BaseResp resp) {
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_AUTH_DENIED:
case BaseResp.ErrCode.ERR_USER_CANCEL:
if (RETURN_MSG_TYPE_SHARE == resp.getType()) UIUtils.showToast("分享失败");
else UIUtils.showToast("登录失败");
break;
case BaseResp.ErrCode.ERR_OK:
switch (resp.getType()) {
case RETURN_MSG_TYPE_LOGIN:
//拿到了微信返回的code,立马再去请求access_token
String code = ((SendAuth.Resp) resp).code;
final HttpRequest request = new WxRequest(WxConfig.APP_ID,WxConfig.APP_SECURE,code,"authorization_code");
Sdk.http().get(request, new HttpCallback<WxAtResponse>() {
@Override
protected void onSuccess(HttpResponse result) {
if(result instanceof WxAtResponse){
WxUserRequest wxUserRequest = new WxUserRequest(((WxAtResponse) result).getAccess_token(),((WxAtResponse) result).getOpenid());
Sdk.http().get(wxUserRequest, new HttpCallback<WxUserResponse>() {
@Override
protected void onSuccess(HttpResponse result) {
if(result instanceof WxUserResponse) {
uiManager.getInstance(WXEntryActivity.this).setUserInfo(((WxUserResponse) result).getNickname(),((WxUserResponse) result).getSex(),((WxUserResponse) result).getUnionid(),
((WxUserResponse) result).getOpenid(),((WxUserResponse) result).getLanguage(),((WxUserResponse) result).getCity(),((WxUserResponse) result).getProvince()
,((WxUserResponse) result).getCountry(),((WxUserResponse) result).getHeadimgurl());
uiManager.getInstance(WXEntryActivity.this).loginSuccess();
WxLoginEvent event = new WxLoginEvent();
event.setSuccess(true);
event.setOpenId(((WxUserResponse) result).getOpenid());
EventBus.getDefault().post(event);
LoginManager.login(((WxUserResponse) result).getOpenid(),((WxUserResponse) result).getNickname());
mHandler.sendEmptyMessage(0);
finish();
}
}
@Override
protected WxUserResponse parse(String response) {
WxUserResponse res = JSON.parseObject(response,getType());
return res;
}
});
}
}
@Override
protected void onError(Throwable ex) {
WxLoginEvent event = new WxLoginEvent();
event.setSuccess(false);
event.setOpenId("");
EventBus.getDefault().post(event);
mHandler.sendEmptyMessage(1);
}
@Override
protected WxAtResponse parse(String response) {
WxAtResponse res = JSON.parseObject(response,getType());
return res;
}
});
//就在这个地方,用网络库什么的或者自己封的网络api,发请求去咯,注意是get请求
break;
case RETURN_MSG_TYPE_SHARE:
SharedPrefConfig.getInstance(this).sharedTime();
UIUtils.showToast("3朵荷花已经下发到您的账户");
scManager.getInstance(this).addLotus(3);
EventBus.getDefault().post(new SharedWXEvent());
finish();
break;
}
break;
}
}
@Override
protected void HandleMessage(Message msg) {
if(msg.what == 0) {
UIUtils.showToast("登录成功");
} else if(msg.what == 1){
} else if(msg.what == 1){UIUtils.showToast("登录失败");
}
}
}