// 处理qq登录
    public function login()
    {
      //应用APP ID
     $app_id = "101549464";
      //应用APP Key
     $app_secret = "06a102ab136ec68afa05624792e5061a";
      //应用填写的网站回调域
     $my_url = "http://www.ztuc.cn/qqlogin";
     
      //Step1:获取Authorization Code
      $code=isset($_REQUEST["code"])?$_REQUEST["code"]:0;//存放Authorization Code
   
      if(empty($code)) {
        //state参数用于防止CSRF攻击,成功授权后回调时原样带回
        $state = md5(uniqid(rand(), TRUE));
        Session::set('state',$state);
        //拼接URL
        $dialog_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=".$app_id."&redirect_uri=".urlencode($my_url)."&state=".Session::get('state');
        return redirect($dialog_url)->send();
    }
  
        //Step2:通过Authorization Code获取Access Token
       if($_REQUEST['state'] == Session::get('state') || 1) {
        //拼接URL
        $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&"."client_id=".$app_id."&redirect_uri=".urlencode($my_url)."&client_secret=".$app_secret."&code=".$code;
        $response = file_get_contents($token_url);
 
        //如果用户临时改变主意取消登录,返回true!==false,否则执行step3  
        if (strpos($response, "callback") !== false) {
            $lpos = strpos($response, "(");
            $rpos = strrpos($response, ")");
            $response = substr($response, $lpos + 1, $rpos - $lpos -1);
            $msg = json_decode($response);
            if (isset($msg->error)) {
               
              return $msg->error.$msg->error_description;
            }
        }
  
        //Step3:使用Access Token来获取用户的OpenID
        $params = array();
        parse_str($response, $params);//把传回来的数据参数变量化
        $graph_url = "https://graph.qq.com/oauth2.0/me?access_token=".$params['access_token'];
        $str = file_get_contents($graph_url);
        if (strpos($str, "callback") !== false) {
            $lpos = strpos($str, "(");
            $rpos = strrpos($str, ")");
            $str = substr($str, $lpos + 1, $rpos - $lpos -1);
        }
        $user = json_decode($str);//存放返回的数据 client_id ,openid
        if (isset($user->error)) {
           
            return $user->error.$user->error_description;
        }
  
        //Step4:使用openid和access_token获取用户信息
        $user_data_url = "https://graph.qq.com/user/get_user_info?access_token={$params['access_token']}&oauth_consumer_key={$app_id}&openid={$user->openid}&format=json";
      
        $user_data = json_decode(file_get_contents($user_data_url));//获取到的用户信息

        //以下为授权成功后的自定义操作
        if($user_data){
            //自定义内容
     }

        }else{
       
            return $this->error('未知错误!');
        }
    }else{
         return $this->error('The state does not match. You may be a victim of CSRF');
    }
 
 }