public function WeChatLogin(){
$WxData = $this->input->post();
$arrUserData = array();
if(isset($WxData['nickName'])&&!empty($WxData['nickName']))
$arrUserData['nickname'] = base64_encode($WxData['nickName']);
if(isset($WxData['avatarUrl'])&&!empty($WxData['avatarUrl']))
$arrUserData['avatar_url'] = $WxData['avatarUrl'];
if(isset($WxData['gender'])&&!empty($WxData['gender']))
$arrUserData['gender'] = $WxData['gender'];
if(isset($WxData['province'])&&!empty($WxData['province']))
$arrUserData['province'] = $WxData['province'];
if(isset($WxData['city'])&&!empty($WxData['city']))
$arrUserData['city'] = $WxData['city'];
if(isset($WxData['country'])&&!empty($WxData['country']))
$arrUserData['country'] = $WxData['country'];
//获取微信用户的openid
$arrWeChat = $this->GetWxOpenid($WxData['code']);
//判断是否获取到openid
if(isset($arrWeChat['openid']) && $arrWeChat['openid'] !== null){
//判断该用户是否存在
$arrUser = $this->user->GetUserOpenid($arrWeChat['openid']);
//不存在,插入数据库
if(empty($arrUser)){
$arrUserData['last_login_time'] = time();
$arrUserData['regtime'] = time();
$arrUserData['status'] = 0;
$arrUserData['cid'] = 1;
$arrUserData['openid'] = $arrWeChat['openid'];
//插入数据库返回userid
$bResult = $this->user->AddWeChatUser($arrUserData);
}
//存在,更新登入时间
else{
$arrUserData['last_login_time'] = time();
$bResult = $this->user->UpdateWeChatUser($arrWeChat['openid'],$arrUserData);
}
$arrData['role'] = !empty($arrUser)?$arrUser[0]['role']:'1';
$arrData['openid'] = $arrWeChat['openid'];
//生成token,存到redis
$arrData['sToken'] = $this->usertoken->AddTokenToRedis($arrWeChat['openid']);
if($bResult){
$arrHint = array('nStatus'=>0,'sMsg'=>'查询成功','arrData'=>$arrData);
}else{
$arrHint = array('nStatus'=>1,'sMsg'=>'查询失败');
}
}else{
$arrHint = array('nStatus'=>2,'sMsg'=>'openid获取失败');
}
$this->output->set_content_type('application/json')->set_output(json_encode($arrHint));
}
public function GetWxOpenid($sCode){
//获取微信openid接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".AppID."&secret=".AppSecret."&js_code=".$sCode."&grant_type=authorization_code";
//初始化
$curl = curl_init();
// 使用curl_setopt()设置要获取的URL地址
curl_setopt($curl, CURLOPT_URL, $url);
// 设置是否输出header
curl_setopt($curl, CURLOPT_HEADER, false);
// 设置是否输出结果
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 设置是否检查服务器端的证书
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// 使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量
$data = curl_exec($curl);
// 使用 curl_close() 关闭CURL会话
curl_close($curl);
$result = json_decode($data, true);
return $result;
}