setError("缺少回调参数code"); return false; } if (empty($state)) { $this->setError("缺少回调参数state"); return false; } // 获取access token $wxopenobj = new mWeixinOpen(); $res = $wxopenobj->getAccessToken($code); if (!$res) { $this->setError($wxopenobj->getError()); return false; } // 获取扫码登录用户信息 $userinfo = $wxopenobj->getUserInfo($res['access_token'], $res['openid']); if (!$userinfo) { $this->setError($wxopenobj->getError()); return false; } $uobj = new mUser(); $agent_login_info = $uobj->getAdminUserByOpenid($res['openid']); if (empty($agent_login_info)) { $login_user_info = $uobj->getLoginUserByOpenid($res['openid']); if(empty($login_user_info)) $login_user_info = $uobj->addLoginUser(array('openid' => $res['openid'])); if(empty($login_user_info)){ $this->setError("注册失败"); return false; } $this->setError("请联系管理员开启账号"); return false; } if ($agent_login_info['status'] == 0) { $this->setError("账号已被禁用"); return false; } $jwttoken = $this->getJwtToken(array('openid' => $res['openid'])); if (empty($jwttoken)) { $this->setError($this->getError()); return false; } $data = array(); $data['jwttoken'] = $jwttoken; $data['openid'] = $res['openid']; $data['nickname'] = $res['nickname']; return $data; } private function getJwtToken($jwtdata) { $jwtobj = new mJwt(); $jwtobj->expire = 30*24*60*60; $jwttoken = $jwtobj->getJwtEncode($jwtdata); if (empty($jwttoken)) { $this->setError("登录失败|jwt"); return false; } return $jwttoken; } }