基于thinkphp5.1和easyWeChat实现第三方平台扫码授权

1 <?php
2
3 namespace app\wechat\controller;
4
5 use EasyWeChat\Factory;
6 use EasyWeChat\Kernel\Messages\News;
7 use EasyWeChat\Kernel\Messages\NewsItem;
8 use EasyWeChat\OpenPlatform\Server\Guard;
9 use EasyWeChat\OpenPlatform\Auth;
10 use think\Controller;
11 use think\Db;
12 use think\facade\Cookie;
13 use think\facade\Cache;
14
15 class Wxnotify extends Action
16 {
17
18 public function notify(){
19
20 $config = $this->getOpenConfig();
21 $openPlatform = Factory::openPlatform($config);
22
23 $server = $openPlatform->server;
24
25 return $server->serve();
26 }
27
28 public function auth(){
29
30 $config = $this->getOpenConfig();
31 $openPlatform = Factory::openPlatform($config);
32 $response = $openPlatform->getPreAuthorizationUrl('http://t.lznews.cn/wxcallback');
33
34 header("Location: $response");
35 }
36
37 public function wxcallback(){
38 $config = $this->getOpenConfig();
39 $openPlatform = Factory::openPlatform($config);
40 $server = $openPlatform->server;
41 $server->push(function ($message) {
42
43 }, Guard::EVENT_AUTHORIZED);
44
45 $aa = request()->param();
46
47 /*array(2) {
48 ["auth_code"] => string(102) "queryauthcode@@@wZUEjJoHPKu-tQhOIsMDA-soRJGxfIp6frb42Geeoqj4F7-qoNV1TgooEsA2GnkaA9kAXa3Ee8udYgsSop1rUQ"
49 ["expires_in"] => string(4) "3600"
50 }*/
51
52 $code = $openPlatform->handleAuthorize($aa['auth_code']);
53
54 /*array(1) {
55 ["authorization_info"] => array(5) {
56 ["authorizer_appid"] => string(18) "wx99ed51ac55c8b9c1"
57 ["authorizer_access_token"] => string(157) "17_IoCi_gV1D_o3xaU1Ifsh8RR5DNKEUldVQoR975StqVHRs5pDpvIPYu8NNGwUjc9NezrQiATPiyMweLSo0OQg3wc6OQDYSdbVorUQGVk403sCNm-DrT5ZksWLw2J8exZI-1caib3gJguiED8YZPNeAMDMCA"
58 ["expires_in"] => int(7200)
59 ["authorizer_refresh_token"] => string(58) "refreshtoken@@@G-xqVs6CF_cPNX2z24m74GoCse9kCvzMJlUqd9Xrrn8"
60 ["func_info"] => array(21) {
61 [0] => array(1) {
62 ["funcscope_category"] => array(1) {
63 ["id"] => int(1)
64 }
65 }
66 [1] => array(1) {
67 ["funcscope_category"] => array(1) {
68 ["id"] => int(15)
69 }
70 }
71 [2] => array(1) {
72 ["funcscope_category"] => array(1) {
73 ["id"] => int(4)
74 }
75 }
76 [3] => array(1) {
77 ["funcscope_category"] => array(1) {
78 ["id"] => int(7)
79 }
80 }
81 [4] => array(1) {
82 ["funcscope_category"] => array(1) {
83 ["id"] => int(2)
84 }
85 }
86 [5] => array(1) {
87 ["funcscope_category"] => array(1) {
88 ["id"] => int(3)
89 }
90 }
91 [6] => array(1) {
92 ["funcscope_category"] => array(1) {
93 ["id"] => int(11)
94 }
95 }
96 [7] => array(1) {
97 ["funcscope_category"] => array(1) {
98 ["id"] => int(6)
99 }
100 }
101 [8] => array(1) {
102 ["funcscope_category"] => array(1) {
103 ["id"] => int(5)
104 }
105 }
106 [9] => array(1) {
107 ["funcscope_category"] => array(1) {
108 ["id"] => int(8)
109 }
110 }
111 [10] => array(1) {
112 ["funcscope_category"] => array(1) {
113 ["id"] => int(13)
114 }
115 }
116 [11] => array(1) {
117 ["funcscope_category"] => array(1) {
118 ["id"] => int(9)
119 }
120 }
121 [12] => array(1) {
122 ["funcscope_category"] => array(1) {
123 ["id"] => int(10)
124 }
125 }
126 [13] => array(1) {
127 ["funcscope_category"] => array(1) {
128 ["id"] => int(12)
129 }
130 }
131 [14] => array(1) {
132 ["funcscope_category"] => array(1) {
133 ["id"] => int(22)
134 }
135 }
136 [15] => array(1) {
137 ["funcscope_category"] => array(1) {
138 ["id"] => int(23)
139 }
140 }
141 [16] => array(1) {
142 ["funcscope_category"] => array(1) {
143 ["id"] => int(26)
144 }
145 }
146 [17] => array(2) {
147 ["funcscope_category"] => array(1) {
148 ["id"] => int(27)
149 }
150 ["confirm_info"] => array(3) {
151 ["need_confirm"] => int(0)
152 ["already_confirm"] => int(0)
153 ["can_confirm"] => int(0)
154 }
155 }
156 [18] => array(2) {
157 ["funcscope_category"] => array(1) {
158 ["id"] => int(33)
159 }
160 ["confirm_info"] => array(3) {
161 ["need_confirm"] => int(0)
162 ["already_confirm"] => int(0)
163 ["can_confirm"] => int(0)
164 }
165 }
166 [19] => array(1) {
167 ["funcscope_category"] => array(1) {
168 ["id"] => int(35)
169 }
170 }
171 [20] => array(2) {
172 ["funcscope_category"] => array(1) {
173 ["id"] => int(44)
174 }
175 ["confirm_info"] => array(3) {
176 ["need_confirm"] => int(0)
177 ["already_confirm"] => int(0)
178 ["can_confirm"] => int(0)
179 }
180 }
181 }
182 }
183 }*/
184
185 $sq = Db::name('wechat_account')->where([['appid','=',$code['authorization_info']['authorizer_appid']], ['shouquan','=','1']])->find();
186
187 if(!$sq) {
188 return '请先注册公众号或小程序信息,并勾选为扫码授权';
189 }
190
191 $name = $openPlatform->getAuthorizer($code['authorization_info']['authorizer_appid']);
192 /*array(2) {
193 ["authorizer_info"] => array(11) {
194 ["nick_name"] => string(9) "小鲁哥"
195 ["head_img"] => string(128) "http://wx.qlogo.cn/mmopen/2h8qNVmIGxDBibx0LzLo7zbibVxvzwVWkVeNwWpLoiaw8HFtDf9TvhBkTkIfU6KJMJgibH7ulKI2MafvudBP4moEb98tz3N8n72O/0"
196 ["service_type_info"] => array(1) {
197 ["id"] => int(2)
198 }
199 ["verify_type_info"] => array(1) {
200 ["id"] => int(0)
201 }
202 ["user_name"] => string(15) "gh_f2ee5d98dbd4"
203 ["alias"] => string(9) "lznewsxlg"
204 ["qrcode_url"] => string(122) "http://mmbiz.qpic.cn/mmbiz_jpg/9qH8V6o0A0J2joL7hbYgGCt5m0icdMXTh52C2EBEBh3Hzuiah6E9eYqHgYGGBs1Z6M9aiayho0Zl8w7sP4MI6zFmA/0"
205 ["business_info"] => array(5) {
206 ["open_pay"] => int(1)
207 ["open_shake"] => int(0)
208 ["open_scan"] => int(0)
209 ["open_card"] => int(1)
210 ["open_store"] => int(1)
211 }
212 ["idc"] => int(1)
213 ["principal_name"] => string(30) "山东大鲁网络有限公司"
214 ["signature"] => string(108) "线索提供、闲聊扯皮、互动交流、同城活动。小鲁哥,一个逼格很高的公众平台。"
215 }
216 ["authorization_info"] => array(3) {
217 ["authorizer_appid"] => string(18) "wx99ed51ac55c8b9c1"
218 ["authorizer_refresh_token"] => string(58) "refreshtoken@@@G-xqVs6CF_cPNX2z24m74GoCse9kCvzMJlUqd9Xrrn8"
219 ["func_info"] => array(21) {
220 [0] => array(1) {
221 ["funcscope_category"] => array(1) {
222 ["id"] => int(1)
223 }
224 }
225 [1] => array(1) {
226 ["funcscope_category"] => array(1) {
227 ["id"] => int(15)
228 }
229 }
230 [2] => array(1) {
231 ["funcscope_category"] => array(1) {
232 ["id"] => int(4)
233 }
234 }
235 [3] => array(1) {
236 ["funcscope_category"] => array(1) {
237 ["id"] => int(7)
238 }
239 }
240 [4] => array(1) {
241 ["funcscope_category"] => array(1) {
242 ["id"] => int(2)
243 }
244 }
245 [5] => array(1) {
246 ["funcscope_category"] => array(1) {
247 ["id"] => int(3)
248 }
249 }
250 [6] => array(1) {
251 ["funcscope_category"] => array(1) {
252 ["id"] => int(11)
253 }
254 }
255 [7] => array(1) {
256 ["funcscope_category"] => array(1) {
257 ["id"] => int(6)
258 }
259 }
260 [8] => array(1) {
261 ["funcscope_category"] => array(1) {
262 ["id"] => int(5)
263 }
264 }
265 [9] => array(1) {
266 ["funcscope_category"] => array(1) {
267 ["id"] => int(8)
268 }
269 }
270 [10] => array(1) {
271 ["funcscope_category"] => array(1) {
272 ["id"] => int(13)
273 }
274 }
275 [11] => array(1) {
276 ["funcscope_category"] => array(1) {
277 ["id"] => int(9)
278 }
279 }
280 [12] => array(1) {
281 ["funcscope_category"] => array(1) {
282 ["id"] => int(10)
283 }
284 }
285 [13] => array(1) {
286 ["funcscope_category"] => array(1) {
287 ["id"] => int(12)
288 }
289 }
290 [14] => array(1) {
291 ["funcscope_category"] => array(1) {
292 ["id"] => int(22)
293 }
294 }
295 [15] => array(1) {
296 ["funcscope_category"] => array(1) {
297 ["id"] => int(23)
298 }
299 }
300 [16] => array(1) {
301 ["funcscope_category"] => array(1) {
302 ["id"] => int(26)
303 }
304 }
305 [17] => array(2) {
306 ["funcscope_category"] => array(1) {
307 ["id"] => int(27)
308 }
309 ["confirm_info"] => array(3) {
310 ["need_confirm"] => int(0)
311 ["already_confirm"] => int(0)
312 ["can_confirm"] => int(0)
313 }
314 }
315 [18] => array(2) {
316 ["funcscope_category"] => array(1) {
317 ["id"] => int(33)
318 }
319 ["confirm_info"] => array(3) {
320 ["need_confirm"] => int(0)
321 ["already_confirm"] => int(0)
322 ["can_confirm"] => int(0)
323 }
324 }
325 [19] => array(1) {
326 ["funcscope_category"] => array(1) {
327 ["id"] => int(35)
328 }
329 }
330 [20] => array(2) {
331 ["funcscope_category"] => array(1) {
332 ["id"] => int(44)
333 }
334 ["confirm_info"] => array(3) {
335 ["need_confirm"] => int(0)
336 ["already_confirm"] => int(0)
337 ["can_confirm"] => int(0)
338 }
339 }
340 }
341 }
342 }*/
343
344 Db::name('wechat_account')->where('id', $sq['id'])->update(['token' => $code['authorization_info']['authorizer_refresh_token']]);
345
346 return $server->serve();
347 }
348 }

赞 (0)
