qq互联
<!-- 登录按钮 --> <a href="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id={$qq_appid}&redirect_uri=http://{$_SERVER[\'HTTP_HOST\']}{:U(\'Index/login\')}&scope=get_user_info"><img src="http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/img/Connect_logo_7.png" alt="" /></a>
<?php public function login(){ if($_GET[\'clear_qq\']){ session(\'qq_openid\',null); session(\'access_token\',null); session(\'refresh_token\',null); header("location:".U(\'Index/login\')); exit(); } if(IS_AJAX){ $User_mod= M(\'users\'); $client_ip=get_client_ip(); if($_POST[\'ac\']=="check_username"){ $map[\'username\']=array(\'eq\',$_POST[\'username\']); $user=$User_mod->where($map)->find(); if($user){ if($user[\'state\']==1){ session($client_ip.$_POST[\'username\'],null); $this->ajaxReturn(1,"用户名存在!",1); }else{ $this->ajaxReturn(3,"账户异常、被限制登录,请联系客服!",3); } }else{ $this->ajaxReturn(2,"用户名不存在!",2); } }else if($_POST[\'ac\']=="do_login"){ if($_POST[\'username\']==null or $_POST[\'password\']==null ){ $this->ajaxReturn(0,"用户名或密码为空",0); } if($_POST[\'verify\']==null ){ $this->ajaxReturn(4,"请输入验证码",4); } if(md5($_POST[\'verify\'])!=$_SESSION[\'verify\']){ $this->ajaxReturn(8,"验证码错误",8); } $map[\'username\']=array(\'eq\',$_POST[\'username\']); $user=$User_mod->where($map)->find(); if($user){ if($user[\'state\']==1){ if(md5($_POST[\'password\'])==$user[\'password\']){ if($_POST[\'save_pw\']){ setcookies(\'uid\', $user[\'id\'],604800); }else{ setcookies(\'uid\', $user[\'id\']); } if($_SESSION[\'qq_openid\'] && $_SESSION[\'qq_access_token\'] && $_SESSION[\'qq_refresh_token\']){ if(update_user_qq_token($user[\'id\'])){ $this->ajaxReturn($user[\'username\'],"绑定成功!",5); }else{ $this->ajaxReturn($user[\'username\'],"绑定失败!",6); } }else{ $this->ajaxReturn($user[\'username\'],"登录成功!",5); } }else{ $this->ajaxReturn($user[\'username\'],"密码错误!",6); } }else{ $this->ajaxReturn(3,"账户异常、被限制登录,请联系客服!",3); } }else{ $this->ajaxReturn(2,"用户名不存在!",2); } }else{ $this->ajaxReturn(0,"非法请求!",0); } }else{ if($this->userinfo){ $this->error("已经登录无需登录",U(\'Index/index\')); }else{ $this->assign(\'qq_appid\',C(\'qq_appid\')); if($_SESSION[\'qq_openid\'] && $_SESSION[\'qq_access_token\']){ $user_qq_info=get_qq_info($_SESSION[\'qq_openid\'],$_SESSION[\'qq_access_token\'],C(\'qq_appid\')); $this->assign(\'nickname\',$user_qq_info[\'nickname\']); $this->assign(\'img\',$user_qq_info[\'figureurl\']); $this->assign(\'qq_appid\',C(\'qq_appid\')); $this->display(\'link_qq\'); exit(); } if ($_GET [\'code\']) { //qq登录 $res_qq_login=$this->qq_login($_GET [\'code\']); if($res_qq_login[\'retcode\']){ $this->success("登陆成功!",U(\'Index/index\')); }else{ session(\'qq_openid\',$res_qq_login[\'openid\']); session(\'qq_access_token\',$res_qq_login[\'token\'][\'access_token\']); session(\'qq_refresh_token\',$res_qq_login[\'token\'][\'refresh_token\']); $this->success("第一次使用 ,请绑定用户!",U(\'Index/login\')); } }else{ if(is_mobile()){ $this->display(\'m_login\'); }else{ $this->display(); } } } } } private function qq_login($code){ $_SESSION[\'qq_login_state\'] = md5(uniqid(rand(), TRUE)); $redirect_uri=urlencode("http://{$_SERVER[\'HTTP_HOST\']}"); $url_get_access_token = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=".C(\'qq_appid\')."&client_secret=".C(\'qq_appsecret\')."&code={$code}&state={$_SESSION[\'qq_login_state\']}&redirect_uri=".$redirect_uri; $res_access_token=https_request ( $url_get_access_token ); $arr_access_token=get_parse($res_access_token); $url_openid= "https://graph.qq.com/oauth2.0/me?".$res_access_token; $re_openid = https_request ( $url_openid ); if (preg_match ( \'/\"openid\":\"(\w+)\"/i\', $re_openid, $match )) { $qq_openid = $match [1]; } $map_user[\'qq_openid\']=array(\'eq\',$qq_openid); $user=M(\'users\')->where($map_user)->find(); if($user){ setcookies(\'uid\', $user[\'id\'],604800); update_qq_access_token_data($qq_openid,$arr_access_token); $data[\'retcode\']=1; $data[\'id\']=$user[\'id\']; return $data; }else{ $data[\'openid\']=$qq_openid; $data[\'token\']=$arr_access_token; return $data; } } ?>