-    private static final String APP_SECRET = "9a2efcae3c6038b5450b0c2ef3187b1f";
28
-    private String wxCode;
24
+    private String unionid;
25
+    private String token;
29 26
 
30
-    public LoginInteractor(String wxCode, InteractorListener<String> listener) {
31
-        this.wxCode = wxCode;
27
+    public LoginInteractor(String unionid, String token, InteractorListener<String> listener) {
28
+        this.unionid = unionid;
29
+        this.token = token;
32 30
         this.listener = listener;
33 31
     }
34 32
 
35 33
     @Override
36 34
     public void startJob() {
37
-        fetchToken();
38
-    }
39
-
40
-    @Override
41
-    public void cancelJob() {
42
-        cancelJob(loginTask);
43
-        cancelJob(fetchTokenTask);
44
-        cancelJob(fetchUserInfoTask);
45
-    }
46
-
47
-    private void cancelJob(HttpPostTask task) {
48
-        if (task == null) {
49
-            return;
50
-        }
51
-        if (task.getStatus() == AsyncTask.Status.RUNNING) {
52
-            task.cancel(true);
53
-        }
54
-    }
55
-
56
-    private void fetchToken() {
57
-
58
-        final String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + APP_ID
59
-                + "&secret=" + APP_SECRET + "&code=" + wxCode + "&grant_type=authorization_code";
60
-        LogHelper.d("czy","interactor fetchToken with url = "+tokenUrl);
61
-        fetchTokenTask = new HttpPostTask(null) {
62
-
63
-            String token;
64
-            String openId;
65
-
66
-            @Override
67
-            protected boolean parseResponse(String response) {
68
-                LogHelper.d("czy","interactor fetchToken parseResponse response = "+response);
69
-                try {
70
-                    JSONObject json = new JSONObject(response);
71
-                    token = json.getString("access_token");
72
-                    openId = json.getString("openid");
73
-                    return true;
74
-                } catch (Exception e) {
75
-                    e.printStackTrace();
76
-                }
77
-                return false;
78
-            }
79
-
80
-            @Override
81
-            protected void onPostSuccess() {
82
-                super.onPostSuccess();
83
-                fetchUserInfo(token, openId);
84
-            }
85
-
86
-            @Override
87
-            protected void onPostFail() {
88
-                super.onPostFail();
89
-            }
90
-        };
91
-        fetchTokenTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), tokenUrl);
92
-    }
93
-
94
-    private void fetchUserInfo(String token, String openId) {
95
-
96
-        String userInfoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" + token + "&openid=" + openId;
97
-        LogHelper.d("czy","interactor fetchUserInfo with url = "+userInfoUrl);
98
-        fetchUserInfoTask = new HttpPostTask(null) {
99
-            HashMap<String, String> params;
100
-
101
-            @Override
102
-            protected boolean parseResponse(String response) {
103
-                LogHelper.d("czy","interactor fetchUserInfo parseResponse response = "+response);
104
-                try {
105
-                    JSONObject json = new JSONObject(response);
106
-                    params = new HashMap<>();
107
-                    params.put("unionid", json.getString("unionid"));
108
-                    params.put("openid", json.getString("openid"));
109
-                    params.put("sex", json.getString("sex"));
110
-                    params.put("nickname", json.getString("nickname"));
111
-                    params.put("headimgurl", json.getString("headimgurl"));
112
-                    params.put("country", json.getString("country"));
113
-                    params.put("province", json.getString("province"));
114
-                    params.put("city", json.getString("city"));
115
-                    return true;
116
-                } catch (Exception e) {
117
-                    e.printStackTrace();
118
-                }
119
-                return false;
120
-            }
121
-
122
-            @Override
123
-            protected void onPostSuccess() {
124
-                super.onPostSuccess();
125
-                wxLogin(params);
126
-            }
127
-
128
-            @Override
129
-            protected void onPostFail() {
130
-                super.onPostFail();
131
-            }
132
-        };
133
-        fetchUserInfoTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), userInfoUrl);
134
-    }
135
-
136
-    private void login() {
137 35
         HashMap<String, String> params = new HashMap<>();
138
-        params.put("username", "chengzhenyu");
139
-        params.put("password", "paiai");
36
+        params.put("unionid", unionid);
37
+        params.put("token", token);
140 38
 
141 39
         loginTask = new HttpPostTask(params) {
142 40
 
143 41
             String lensmanId;
144 42
             String message;
145
-
146
-            @Override
147
-            protected boolean parseResponse(String response) {
148
-                try {
149
-                    JSONObject json = new JSONObject(response);
150
-                    int status = json.getInt("status");
151
-                    if (status == 200) {
152
-                        JSONObject info = json.getJSONObject("data");
153
-                        lensmanId = info.getString("user_id");
154
-                        return true;
155
-                    } else {
156
-                        message = json.getString("message");
157
-                    }
158
-                } catch (Exception e) {
159
-                    e.printStackTrace();
160
-                }
161
-                return false;
162
-            }
163
-
164
-            @Override
165
-            protected void onPostFail() {
166
-                super.onPostFail();
167
-                listener.onInteractFail(message);
168
-            }
169
-
170
-            @Override
171
-            protected void onPostSuccess() {
172
-                super.onPostSuccess();
173
-                listener.onInteractSuccess(lensmanId);
174
-            }
175
-        };
176
-        loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.LOGIN_URL);
177
-    }
178
-
179
-    private void wxLogin(HashMap<String, String> params) {
180
-
181
-        loginTask = new HttpPostTask(params) {
182
-
183
-            String lensmanId;
184 43
             String userName;
185
-            String message;
186 44
 
187 45
             @Override
188 46
             protected boolean parseResponse(String response) {
189
-                LogHelper.d("czy","interactor wxLogin parseResponse response = "+response);
190 47
                 try {
191 48
                     JSONObject json = new JSONObject(response);
192 49
                     int status = json.getInt("status");
193 50
                     if (status == 200) {
194 51
                         JSONObject info = json.getJSONObject("data");
195 52
                         lensmanId = info.getString("user_id");
196
-                        userName = info.getString("nickname");
53
+                        userName = info.getString("name");
54
+                        if(TextUtils.isEmpty(userName)){
55
+                            userName = info.getString("nickname");
56
+                        }
57
+                        if(TextUtils.isEmpty(userName)){
58
+                            userName = info.getString("username");
59
+                        }
197 60
                         return true;
198 61
                     } else {
199
-                        message = json.getString("message");
62
+                        message = json.getString("description");
200 63
                     }
201 64
                 } catch (Exception e) {
202 65
                     e.printStackTrace();
@@ -218,7 +81,22 @@ public class LoginInteractor implements BaseInteractor {
218 81
                 Preferences.getInstance().setUserName(userName);
219 82
             }
220 83
         };
221
-        loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.WX_LOGIN_URL);
84
+        loginTask.executeOnExecutor(ThreadExecutor.getInstance().getExecutor(), UrlContainer.BOX_LENSMAN_LOGIN_URL);
222 85
     }
223 86
 
87
+    @Override
88
+    public void cancelJob() {
89
+        cancelJob(loginTask);
90
+    }
91
+
92
+    private void cancelJob(HttpPostTask task) {
93
+        if (task == null) {
94
+            return;
95
+        }
96
+        if (task.getStatus() == AsyncTask.Status.RUNNING) {
97
+            task.cancel(true);
98
+        }
99
+    }
100
+
101
+
224 102
 }

+ 9 - 27
app/src/main/java/ai/pai/lensman/login/LoginPresenter.java

@@ -1,13 +1,9 @@
1 1
 package ai.pai.lensman.login;
2 2
 
3
-import android.content.Context;
4
-import android.text.TextUtils;
5
-
6 3
 import com.android.common.utils.LogHelper;
7
-import com.tencent.mm.sdk.modelmsg.SendAuth;
8
-import com.tencent.mm.sdk.openapi.IWXAPI;
9
-import com.tencent.mm.sdk.openapi.WXAPIFactory;
10 4
 
5
+import ai.pai.lensman.App;
6
+import ai.pai.lensman.R;
11 7
 import ai.pai.lensman.base.BaseInteractor;
12 8
 import ai.pai.lensman.db.Preferences;
13 9
 
@@ -16,39 +12,24 @@ import ai.pai.lensman.db.Preferences;
16 12
  */
17 13
 public class LoginPresenter implements LoginContract.Presenter,BaseInteractor.InteractorListener<String> {
18 14
 
19
-    private   IWXAPI api;
20
-    private Context context;
21 15
     private LoginContract.View view;
22 16
     private LoginInteractor interactor;
23
-    private static final String APP_ID = "wxf4832536d9dda70a";
24 17
 
25
-    public LoginPresenter(Context context,LoginContract.View view){
18
+    public LoginPresenter(LoginContract.View view){
26 19
         this.view = view;
27
-        this.context = context;
28
-        api = WXAPIFactory.createWXAPI(context, APP_ID, true);
29
-        api.registerApp(APP_ID);
30 20
     }
31 21
 
32 22
     @Override
33
-    public void login() {
23
+    public void login(String unionid, String token) {
34 24
         LogHelper.d("czy","presenter login");
35
-
36
-        SendAuth.Req req = new SendAuth.Req();
37
-        req.scope = "snsapi_userinfo";
38
-        req.state = "paiai_for_lensman";
39
-        api.sendReq(req);
25
+        view.showProgressView();
26
+        interactor = new LoginInteractor(unionid,token,this);
27
+        interactor.startJob();
40 28
     }
41 29
 
42 30
     @Override
43 31
     public void start() {
44
-        String wxCode = Preferences.getInstance().getWXCode();
45
-        LogHelper.d("czy","presenter start with wx code = "+wxCode);
46
-        if(!TextUtils.isEmpty(wxCode)){
47
-            view.showProgressView();
48
-            interactor = new LoginInteractor(wxCode,this);
49
-            interactor.startJob();
50
-            Preferences.getInstance().setWXCode("");
51
-        }
32
+
52 33
     }
53 34
 
54 35
     @Override
@@ -62,6 +43,7 @@ public class LoginPresenter implements LoginContract.Presenter,BaseInteractor.In
62 43
     @Override
63 44
     public void onInteractSuccess(String result) {
64 45
         view.hideProgressView();
46
+        view.showLoginHint(App.getAppContext().getString(R.string.login_success));
65 47
         Preferences.getInstance().setLensManId(result);
66 48
         view.jumpMain();
67 49
     }

+ 1 - 6
app/src/main/java/ai/pai/lensman/utils/UrlContainer.java

@@ -11,8 +11,6 @@ public class UrlContainer {
11 11
 
12 12
     public static final String LOGIN_URL = HOST_URL+"login";
13 13
 
14
-    public static final String SESSION_IDS_CREATE = HOST_URL+"uuid";
15
-
16 14
     /**
17 15
      * user_id  # 用户唯一标识
18 16
      * nickname  # 用户昵称
@@ -71,9 +69,6 @@ public class UrlContainer {
71 69
 
72 70
     public static final String SERVER_TIME_URL=HOST_URL+"s/server_time";
73 71
 
74
-    /**
75
-     * 盒子程序版本信息
76
-     */
77
-    public static final String BOX_VERSION_URL = HOST_URL+"op/bpversion";
72
+    public static final String BOX_LENSMAN_LOGIN_URL = HOST_URL+"box/loginqr";
78 73
 
79 74
 }

+ 1 - 1
app/src/main/res/layout/activity_login.xml

@@ -47,7 +47,7 @@
47 47
             android:layout_marginBottom="50dp"
48 48
             android:background="@drawable/login_btn_rounded_rect_bg"
49 49
             android:gravity="center"
50
-            android:text="@string/wx_login"
50
+            android:text="@string/wx_scan_login"
51 51
             android:textColor="@color/wx_login_btn_stroke"
52 52
             android:textSize="18sp" />
53 53
 

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -12,6 +12,7 @@
12 12
     <string name="settings">设置</string>
13 13
     <string name="scene">场景%d</string>
14 14
 
15
+    <string name="wx_scan_login">扫描拍爱公众号授权码</string>
15 16
     <string name="wx_login">微信登录</string>
16 17
     <string name="agree_protocol">已阅读并同意<u>拍爱用户协议</u></string>
17 18
 
@@ -143,4 +144,6 @@
143 144
     <string name="usb_permission_denied">请检查设备是否已开放root权限</string>
144 145
 
145 146
     <string name="sdcard_error">保存照片失败,请检查手机存储卡</string>
147
+
148
+    <string name="scan_login_qr_error">扫描授权码失败</string>
146 149
 </resources>

pai2 - Gogs: Go Git Service

拍爱

Brightcells: 65db8b1bc1 Add Src PAIAI_LENSMAN2 преди 8 години
account d38cc6ceb2 Add multi openid for UserInfo & Change create order support miniapp преди 8 години
api d4ee48d797 Complete change to use django-we's urls.py преди 8 години
box bb58496f42 Add StatusCode TOKEN_HAS_EXPIRED преди 8 години
docs 212e3994d1 MP verify file преди 8 години
geo 246a9ff4b8 Change to 'from utils.redis.connect import r' преди 8 години
group d247cf9e73 Fix Bug: Group photo url error преди 8 години
message 65db8b1bc1 Add Src PAIAI_LENSMAN2 преди 8 години
miniapp 32a7d9ffa0 Update wx relative преди 8 години
operation 65db8b1bc1 Add Src PAIAI_LENSMAN2 преди 8 години
page d4ee48d797 Complete change to use django-we's urls.py преди 8 години
pai2 65db8b1bc1 Add Src PAIAI_LENSMAN2 преди 8 години
pay 37c5365a18 Change to use django-we support WeChat OAuth2/Share relative api преди 8 години
photo d4ee48d797 Complete change to use django-we's urls.py преди 8 години
server 4547c709bf Add api get_server_time_api преди 8 години
utils bb58496f42 Add StatusCode TOKEN_HAS_EXPIRED преди 8 години
website 356254dea5 Fix typo error преди 8 години
.editorconfig 4defb80fdc gogs first init преди 9 години
.gitignore 2f29afecbd modify version in operation преди 9 години
.isort.cfg afcdf74a49 add api group_data_api преди 9 години
TODO.md d31ffaa118 Update TODO преди 8 години
check.sh 95c1d32792 put isort and pep8 in check.sh преди 9 години
isort.sh 6626af8a8d add api lensman_wx_authorize_api преди 9 години
manage.py fabef63211 set line_length=200 for isort преди 9 години
pep8.sh 4defb80fdc gogs first init преди 9 години
requirements.txt d247cf9e73 Fix Bug: Group photo url error преди 8 години