正在显示
3 个修改的文件
包含
118 行增加
和
46 行删除
@@ -7,7 +7,7 @@ return [ | @@ -7,7 +7,7 @@ return [ | ||
7 | 'Is_sift' => '是否为精选', | 7 | 'Is_sift' => '是否为精选', |
8 | 'Is_sift 0' => '否', | 8 | 'Is_sift 0' => '否', |
9 | 'Is_sift 1' => '是', | 9 | 'Is_sift 1' => '是', |
10 | - 'Score' => '积分', | 10 | + 'Score' => '可获积分', |
11 | 'Createtime' => '创建时间', | 11 | 'Createtime' => '创建时间', |
12 | 'Updatetime' => '更新时间', | 12 | 'Updatetime' => '更新时间', |
13 | 'Item.title' => '名称' | 13 | 'Item.title' => '名称' |
@@ -20,78 +20,111 @@ class User extends Api | @@ -20,78 +20,111 @@ class User extends Api | ||
20 | protected $noNeedRight = ['*']; | 20 | protected $noNeedRight = ['*']; |
21 | 21 | ||
22 | /** | 22 | /** |
23 | + *手机号授权登录 | ||
23 | * | 24 | * |
24 | - * @ApiTitle (小程序登录) | ||
25 | - * @ApiSummary (微信小程序登录) | 25 | + * @ApiTitle (手机号授权登录) |
26 | * @ApiMethod (POST) | 26 | * @ApiMethod (POST) |
27 | - * @ApiParams (name="code", type="string", required=true, description="code") | ||
28 | - * @ApiParams (name="phone", type="string", required=true, description="phone") | 27 | + * @ApiRoute (/api/myinfo/login) |
28 | + * @ApiParams (name="code", type="string", required=true, description="code-wx.login的code") | ||
29 | + * @ApiParams (name="encryptedData", type="string", required=true, description="encryptedData") | ||
30 | + * @ApiParams (name="iv", type="string", required=true, description="iv") | ||
31 | + * @ApiReturnParams (name="code", type="integer", required=true, sample="0") | ||
32 | + * @ApiReturnParams (name="msg", type="string", required=true, sample="返回成功") | ||
33 | + * @ApiReturn ({ | ||
34 | + 'code':'1', | ||
35 | + 'msg':'返回成功' | ||
36 | + 'data':[ | ||
37 | + 'id':'用户id' | ||
38 | + 'nickname':'用户昵称' | ||
39 | + 'mobile':'手机号' | ||
40 | + 'avatar':'头像' | ||
41 | + 'token':'token'] | ||
42 | + }) | ||
29 | */ | 43 | */ |
30 | - public function login() | ||
31 | - { | ||
32 | - $config = Config::get('wxapp'); | ||
33 | - $code = $this->request->param('code'); | ||
34 | - $phone = $this->request->param('phone'); | ||
35 | - if (empty($code)) { | 44 | + public function login(){ |
45 | + //接收传递信息 | ||
46 | + $config = Config::get('wechat'); | ||
47 | + $encryptedData = $this->request->post('encryptedData'); | ||
48 | + $iv = $this->request->post('iv'); | ||
49 | + $code = $this->request->post('code'); | ||
50 | + if(empty($code)){ | ||
36 | $this->error('参数错误'); | 51 | $this->error('参数错误'); |
37 | } | 52 | } |
38 | $params = [ | 53 | $params = [ |
39 | - 'appid' => $config['app_id'], //小程序appid | ||
40 | - 'secret' => $config['secret'], //小程序appid的秘钥 | ||
41 | - 'js_code' => $code, //前端传来的code | 54 | + 'appid'=>$config['app_id'], //小程序appid |
55 | + 'secret'=>$config['secret'], //小程序appid的秘钥 | ||
56 | + 'js_code'=>$code, //前端传来的code | ||
42 | 'grant_type' => 'authorization_code' //authorization_code — 授权码模式(即先登录获取code,再获取token) | 57 | 'grant_type' => 'authorization_code' //authorization_code — 授权码模式(即先登录获取code,再获取token) |
43 | ]; | 58 | ]; |
44 | $result = Http::sendRequest("https://api.weixin.qq.com/sns/jscode2session", $params, 'GET');//接口 | 59 | $result = Http::sendRequest("https://api.weixin.qq.com/sns/jscode2session", $params, 'GET');//接口 |
45 | - if ($result['ret']) { | ||
46 | - $json = json_decode($result['msg'], true); //json_decode()接收一个json格式数据将他变为php变量 | ||
47 | - if (isset($json['openid'])) { | ||
48 | - if (isset($phone)) { | ||
49 | - $userId = Db::name('third')->where(['apptype' => 'wxapp', 'openid' => $json['openid']])->value('user_id'); | 60 | + if($result['ret']){ |
61 | + $json = json_decode($result['msg'],true); //json_decode()接收一个json格式数据将他变为php变量 | ||
62 | + if(isset($json['openid'])){ | ||
63 | + $options = [ | ||
64 | + 'debug'=>true, | ||
65 | + 'app_id'=>$config['app_id'], | ||
66 | + 'secret'=>$config['secret'], | ||
67 | + 'token'=>$this->auth->getToken(), //获取token | ||
68 | + 'log' => [ | ||
69 | + 'level' => 'debug', | ||
70 | + 'file' =>'/tmp/easywechat.log', | ||
71 | + ], | ||
72 | + ]; | ||
73 | + $sessionKey = $json['session_key']; | ||
74 | + $app = Factory::miniProgram($options); | ||
75 | + try { | ||
76 | + $phone = $app->encryptor->decryptData($sessionKey,$iv,$encryptedData); | ||
77 | + }catch (\Exception $e){ | ||
78 | + $this->error('网络不好,重新操作'); | ||
79 | + } | ||
80 | + if (isset($phone['phoneNumber'])){ | ||
81 | + $userId = Db::name('third')->where(['apptype'=>'wxapp','openid'=>$json['openid']])->value('user_id'); | ||
50 | $auth = Auth::instance(); | 82 | $auth = Auth::instance(); |
51 | $ret = $auth->direct($userId); | 83 | $ret = $auth->direct($userId); |
52 | - if ($ret) { //假如登录上后获取信息 | 84 | + if ($ret){ //假如登录上后获取信息 |
53 | $data = $auth->getUserinfo(); | 85 | $data = $auth->getUserinfo(); |
54 | - $aut = \db('user')->where('id', $userId)->find(); | 86 | + $aut = \db('user')->where('id',$userId)->find(); |
55 | $data['avatar'] = cdnurl($data['avatar']); //cdnurl第三方存储 | 87 | $data['avatar'] = cdnurl($data['avatar']); //cdnurl第三方存储 |
56 | $data['mobile'] = $aut['mobile']; | 88 | $data['mobile'] = $aut['mobile']; |
57 | - $this->success('登录成功', $data); | ||
58 | - } elseif (empty($ret)) { | 89 | + $this->success('登录成功',$data); |
90 | + }elseif(empty($ret)){ | ||
59 | /*注册一个用户*/ | 91 | /*注册一个用户*/ |
60 | $data = [ | 92 | $data = [ |
61 | 'nickname' => '微信用户', | 93 | 'nickname' => '微信用户', |
62 | 'username' => '微信用户', | 94 | 'username' => '微信用户', |
63 | 'avatar' => '/assets/img/avatar.png', | 95 | 'avatar' => '/assets/img/avatar.png', |
64 | 'status' => 'normal', | 96 | 'status' => 'normal', |
65 | - 'mobile' => $phone, | ||
66 | - 'jointime' => time() | 97 | + 'mobile' => $phone['phoneNumber'], |
98 | + 'jointime'=>time() | ||
67 | ]; | 99 | ]; |
68 | //插入user | 100 | //插入user |
69 | $id = \db('user')->insertGetId($data); | 101 | $id = \db('user')->insertGetId($data); |
70 | //插入third | 102 | //插入third |
71 | \db('third')->insert(['user_id' => $id, 'apptype' => 'wxapp', 'openname' => '微信用户', | 103 | \db('third')->insert(['user_id' => $id, 'apptype' => 'wxapp', 'openname' => '微信用户', |
72 | 'access_token' => $json['session_key'], 'openid' => $json['openid']]); | 104 | 'access_token' => $json['session_key'], 'openid' => $json['openid']]); |
73 | - $userId = Db::name('third')->where(['apptype' => 'wxapp', 'openid' => $json['openid']])->value('user_id'); | 105 | + $userId = Db::name('third')->where(['apptype'=> 'wxapp', 'openid'=>$json['openid']])->value('user_id'); |
74 | $auth = Auth::instance(); | 106 | $auth = Auth::instance(); |
75 | $ret = $auth->direct($userId); | 107 | $ret = $auth->direct($userId); |
76 | - if ($ret) { | 108 | + if ($ret){ |
77 | $data = $auth->getUserinfo(); | 109 | $data = $auth->getUserinfo(); |
78 | - $aut = \db('user')->where('id', $userId)->find(); | 110 | + $aut = \db('user')->where('id',$userId)->find(); |
79 | $data['avatar'] = cdnurl($data['avatar']); | 111 | $data['avatar'] = cdnurl($data['avatar']); |
80 | $data['mobile'] = $aut['mobile']; | 112 | $data['mobile'] = $aut['mobile']; |
81 | - $this->success('登录成功', $data); | ||
82 | - } else { | 113 | + $this->success('登录成功',$data); |
114 | + }else{ | ||
83 | $this->error('连接失败'); | 115 | $this->error('连接失败'); |
84 | } | 116 | } |
85 | } | 117 | } |
86 | - } else { | 118 | + }else{ |
87 | $this->error('手机号未找到,请重新输入'); | 119 | $this->error('手机号未找到,请重新输入'); |
88 | } | 120 | } |
89 | - } else { | 121 | + }else{ |
90 | $this->error('获取openid失败'); | 122 | $this->error('获取openid失败'); |
91 | } | 123 | } |
92 | - } else { | 124 | + }else{ |
93 | $this->error('请求失败'); | 125 | $this->error('请求失败'); |
94 | } | 126 | } |
127 | + | ||
95 | } | 128 | } |
96 | 129 | ||
97 | /** | 130 | /** |
@@ -155,7 +155,7 @@ | @@ -155,7 +155,7 @@ | ||
155 | <div class="list-group panel"> | 155 | <div class="list-group panel"> |
156 | <a href="#个人中心" class="list-group-item" data-toggle="collapse" data-parent="#sidebar">个人中心 <i class="fa fa-caret-down"></i></a> | 156 | <a href="#个人中心" class="list-group-item" data-toggle="collapse" data-parent="#sidebar">个人中心 <i class="fa fa-caret-down"></i></a> |
157 | <div class="child collapse" id="个人中心"> | 157 | <div class="child collapse" id="个人中心"> |
158 | - <a href="javascript:;" data-id="27" class="list-group-item">小程序登录 <span class="tag"> | 158 | + <a href="javascript:;" data-id="27" class="list-group-item">手机号授权登录 <span class="tag"> |
159 | </span> | 159 | </span> |
160 | </a> | 160 | </a> |
161 | <a href="javascript:;" data-id="28" class="list-group-item">我的首页 <span class="tag"> | 161 | <a href="javascript:;" data-id="28" class="list-group-item">我的首页 <span class="tag"> |
@@ -307,7 +307,7 @@ | @@ -307,7 +307,7 @@ | ||
307 | <div class="panel-heading" id="heading-27"> | 307 | <div class="panel-heading" id="heading-27"> |
308 | <h4 class="panel-title"> | 308 | <h4 class="panel-title"> |
309 | <span class="label label-primary">POST</span> | 309 | <span class="label label-primary">POST</span> |
310 | - <a data-toggle="collapse" data-parent="#accordion27" href="#collapseOne27"> 小程序登录 <span class="text-muted">/api/user/login</span></a> | 310 | + <a data-toggle="collapse" data-parent="#accordion27" href="#collapseOne27"> 手机号授权登录 <span class="text-muted">/api/myinfo/login</span></a> |
311 | </h4> | 311 | </h4> |
312 | </div> | 312 | </div> |
313 | <div id="collapseOne27" class="panel-collapse collapse"> | 313 | <div id="collapseOne27" class="panel-collapse collapse"> |
@@ -325,7 +325,7 @@ | @@ -325,7 +325,7 @@ | ||
325 | 325 | ||
326 | <div class="tab-pane active" id="info27"> | 326 | <div class="tab-pane active" id="info27"> |
327 | <div class="well"> | 327 | <div class="well"> |
328 | - 微信小程序登录 </div> | 328 | + 手机号授权登录 </div> |
329 | <div class="panel panel-default"> | 329 | <div class="panel panel-default"> |
330 | <div class="panel-heading"><strong>权限</strong></div> | 330 | <div class="panel-heading"><strong>权限</strong></div> |
331 | <div class="panel-body"> | 331 | <div class="panel-body"> |
@@ -366,13 +366,19 @@ | @@ -366,13 +366,19 @@ | ||
366 | <td>code</td> | 366 | <td>code</td> |
367 | <td>string</td> | 367 | <td>string</td> |
368 | <td>是</td> | 368 | <td>是</td> |
369 | - <td>code</td> | 369 | + <td>code-wx.login的code</td> |
370 | + </tr> | ||
371 | + <tr> | ||
372 | + <td>encryptedData</td> | ||
373 | + <td>string</td> | ||
374 | + <td>是</td> | ||
375 | + <td>encryptedData</td> | ||
370 | </tr> | 376 | </tr> |
371 | <tr> | 377 | <tr> |
372 | - <td>phone</td> | 378 | + <td>iv</td> |
373 | <td>string</td> | 379 | <td>string</td> |
374 | <td>是</td> | 380 | <td>是</td> |
375 | - <td>phone</td> | 381 | + <td>iv</td> |
376 | </tr> | 382 | </tr> |
377 | </tbody> | 383 | </tbody> |
378 | </table> | 384 | </table> |
@@ -395,14 +401,18 @@ | @@ -395,14 +401,18 @@ | ||
395 | </div> | 401 | </div> |
396 | </div> | 402 | </div> |
397 | <div class="panel-body"> | 403 | <div class="panel-body"> |
398 | - <form enctype="application/x-www-form-urlencoded" role="form" action="/api/user/login" method="POST" name="form27" id="form27"> | 404 | + <form enctype="application/x-www-form-urlencoded" role="form" action="/api/myinfo/login" method="POST" name="form27" id="form27"> |
399 | <div class="form-group"> | 405 | <div class="form-group"> |
400 | <label class="control-label" for="code">code</label> | 406 | <label class="control-label" for="code">code</label> |
401 | - <input type="string" class="form-control input-sm" id="code" required placeholder="code" name="code"> | 407 | + <input type="string" class="form-control input-sm" id="code" required placeholder="code-wx.login的code" name="code"> |
408 | + </div> | ||
409 | + <div class="form-group"> | ||
410 | + <label class="control-label" for="encryptedData">encryptedData</label> | ||
411 | + <input type="string" class="form-control input-sm" id="encryptedData" required placeholder="encryptedData" name="encryptedData"> | ||
402 | </div> | 412 | </div> |
403 | <div class="form-group"> | 413 | <div class="form-group"> |
404 | - <label class="control-label" for="phone">phone</label> | ||
405 | - <input type="string" class="form-control input-sm" id="phone" required placeholder="phone" name="phone"> | 414 | + <label class="control-label" for="iv">iv</label> |
415 | + <input type="string" class="form-control input-sm" id="iv" required placeholder="iv" name="iv"> | ||
406 | </div> | 416 | </div> |
407 | <div class="form-group form-group-submit"> | 417 | <div class="form-group form-group-submit"> |
408 | <button type="submit" class="btn btn-success send" rel="27">提交</button> | 418 | <button type="submit" class="btn btn-success send" rel="27">提交</button> |
@@ -425,7 +435,27 @@ | @@ -425,7 +435,27 @@ | ||
425 | <div class="panel panel-default"> | 435 | <div class="panel panel-default"> |
426 | <div class="panel-heading"><strong>返回参数</strong></div> | 436 | <div class="panel-heading"><strong>返回参数</strong></div> |
427 | <div class="panel-body"> | 437 | <div class="panel-body"> |
428 | - 无 | 438 | + <table class="table table-hover"> |
439 | + <thead> | ||
440 | + <tr> | ||
441 | + <th>名称</th> | ||
442 | + <th>类型</th> | ||
443 | + <th>描述</th> | ||
444 | + </tr> | ||
445 | + </thead> | ||
446 | + <tbody> | ||
447 | + <tr> | ||
448 | + <td>code</td> | ||
449 | + <td>integer</td> | ||
450 | + <td></td> | ||
451 | + </tr> | ||
452 | + <tr> | ||
453 | + <td>msg</td> | ||
454 | + <td>string</td> | ||
455 | + <td></td> | ||
456 | + </tr> | ||
457 | + </tbody> | ||
458 | + </table> | ||
429 | </div> | 459 | </div> |
430 | </div> | 460 | </div> |
431 | </div> | 461 | </div> |
@@ -435,7 +465,16 @@ | @@ -435,7 +465,16 @@ | ||
435 | <div class="tab-pane" id="sample27"> | 465 | <div class="tab-pane" id="sample27"> |
436 | <div class="row"> | 466 | <div class="row"> |
437 | <div class="col-md-12"> | 467 | <div class="col-md-12"> |
438 | - <pre id="sample_response27">无</pre> | 468 | + <pre id="sample_response27">{ |
469 | + 'code':'1', | ||
470 | + 'msg':'返回成功' | ||
471 | + 'data':[ | ||
472 | + 'id':'用户id' | ||
473 | + 'nickname':'用户昵称' | ||
474 | + 'mobile':'手机号' | ||
475 | + 'avatar':'头像' | ||
476 | + 'token':'token'] | ||
477 | + }</pre> | ||
439 | </div> | 478 | </div> |
440 | </div> | 479 | </div> |
441 | </div><!-- #sample --> | 480 | </div><!-- #sample --> |
@@ -4813,7 +4852,7 @@ | @@ -4813,7 +4852,7 @@ | ||
4813 | 4852 | ||
4814 | </div> | 4853 | </div> |
4815 | <div class="col-md-6" align="right"> | 4854 | <div class="col-md-6" align="right"> |
4816 | - Generated on 2023-03-13 09:57:22 <a href="./" target="_blank">校园活动</a> | 4855 | + Generated on 2023-03-13 10:24:59 <a href="./" target="_blank">校园活动</a> |
4817 | </div> | 4856 | </div> |
4818 | </div> | 4857 | </div> |
4819 | 4858 |
-
请 注册 或 登录 后发表评论