Browse Source

小程序授权

牟新芬 4 years ago
parent
commit
9af8ea3db0
1 changed files with 39 additions and 20 deletions
  1. 39 20
      app/api/controller/v1/Weixin.php

+ 39 - 20
app/api/controller/v1/Weixin.php

@@ -43,15 +43,20 @@ class Weixin extends BaseController
         $token = $weixinA->oauth_reuslt($code);
         $token = $weixinA->oauth_reuslt($code);
         if (!empty($token['access_token'])) {
         if (!empty($token['access_token'])) {
             $userInfo = $weixinA->userinfo($token['access_token']);
             $userInfo = $weixinA->userinfo($token['access_token']);
-            $data['openid'] = $userInfo['openid'];
-            $data['nickname'] = $userInfo['nickname'];
-            $data['sex'] = $userInfo['sex'];
-            $data['language'] = $userInfo['language'];
-            $data['city'] = $userInfo['city'];
-            $data['province'] = $userInfo['province'];
-            $data['country'] = $userInfo['country'];
-            $data['avatar'] = $userInfo['headimgurl'];
-            (new Member)->where('uid',$request->user['uid'])->save($data);
+            $member = (new Member)->where('uid',$request->user['uid'])->find();
+            if($member['routine_openid']){
+                (new Member)->where('uid',$request->user['uid'])->save(['openid' => $userInfo['openid']]);
+            }else{
+                $data['openid'] = $userInfo['openid'];
+                $data['nickname'] = $userInfo['nickname'];
+                $data['sex'] = $userInfo['sex'];
+                $data['language'] = $userInfo['language'];
+                $data['city'] = $userInfo['city'];
+                $data['province'] = $userInfo['province'];
+                $data['country'] = $userInfo['country'];
+                $data['avatar'] = $userInfo['headimgurl'];
+                (new Member)->where('uid',$request->user['uid'])->save($data);
+            }
             return app('json')->success([
             return app('json')->success([
                 'nickname' => $data['nickname'],
                 'nickname' => $data['nickname'],
                 'avatar'   => $data['avatar']
                 'avatar'   => $data['avatar']
@@ -69,20 +74,34 @@ class Weixin extends BaseController
      * @throws \think\exception\DbException
      * @throws \think\exception\DbException
      */
      */
     public function mp_auth(Request $request){
     public function mp_auth(Request $request){
-        $code = trim($request->post('code'));
-        if (!$code)
-            return app('json')->fail('授权失败,参数有误');
+        $post = UtilService::getMore([
+            ['code', '', 'empty', '参数错误'],
+            ['iv', ''],
+            ['encryptedData', ''],
+        ]);
         try {
         try {
             $mini = Factory::miniProgram(config('weixin')['mini_program']);
             $mini = Factory::miniProgram(config('weixin')['mini_program']);
-            $new_mini = $mini->auth->session($code);
-            $data = UtilService::getMore([
-                ['iv', ''],
-                ['encryptedData', ''],
-            ]);
-            $decryptedData = $mini->encryptor->decryptData($new_mini['session_key'], $data['iv'], $data['encryptData']);
-            dump($decryptedData);die;
+            $new_mini = $mini->auth->session($post['code']);
+            $member = (new Member)->where('uid',$request->user['uid'])->find();
+            if($member['openid']){
+                (new Member)->where('uid',$request->user['uid'])->save(['routine_openid' => $new_mini['openid']]);
+            }else{
+                $userInfo = $mini->encryptor->decryptData($new_mini['session_key'], $post['iv'], $post['encryptedData']);
+                $data['nickname'] = $userInfo['nickName'];
+                $data['sex'] = $userInfo['gender'];
+                $data['language'] = $userInfo['language'];
+                $data['city'] = $userInfo['city'];
+                $data['province'] = $userInfo['province'];
+                $data['country'] = $userInfo['country'];
+                $data['avatar'] = $userInfo['avatarUrl'];
+                (new Member)->where('uid',$request->user['uid'])->save($data);
+                return app('json')->success([
+                    'nickname' => $data['nickname'],
+                    'avatar'   => $data['avatar']
+                ]);
+            }
         } catch (\Exception $e) {
         } catch (\Exception $e) {
-            return app('json')->fail('获取session_key失败,请检查您的配置!', ['line' => $e->getLine(), 'message' => $e->getMessage()]);
+            return app('json')->fail('获取session_key失败', ['line' => $e->getLine(), 'message' => $e->getMessage()]);
         }
         }
     }
     }