个人博客
反正没人看

Thinkphp 增加qq互联登陆的功能

公司用的是thinkphp 3.1,在项目的lib目录建立目录ORG,注意大写,

 qq互联登陆sdk下载地址为http://wiki.connect.qq.com/sdk下载,自行下载,

下载解压之后把Connect2.1文件夹剪切到刚建立的ORG目录下,并改名Connect,

然后在浏览器中进行安装,目录直接写到刚建立的ORG/Connect,就会出现欢迎页面了,直接点击(设置配置项),然后填写id key之类的(注意,callback请填写完全域名,带http://,因为qq互联升级之后要写完全,不然登陆跳转会出现100010错误),然后其他的随意,我是直接全选的,点击 (配置)成功之后,到刚那个Connect目录把除了API目录其他的全部删除,之后把API目录中的文件全部剪切到上一级(Connect)目录中来,把qqConnectAPI.php改为qqConnectAPI.class.php,到此文件部分就可以了,然后在你的项目控制器里写代码了

Public function _initialize(){
     import('@.ORG.Connect.qqConnectAPI'); //通过import载入刚刚的class文件(因为是在同一个项目下直接@,import具体用法请百度)
     $this->QC = new QC();
 }
 
 public function qq_login(){//qq登陆的a标签就可以直接指向这里了
     $this->QC->qq_login();
 }
     public function qq_callback(){//qq的回调函数,在qq互联的官方网站以及配置的时候填写的就是这个回调地址
         $token = $this->QC->qq_callback();
         $openid = $this->QC->get_openid();
         $QC = new QC($token,$openid);
         $arr = $QC->get_user_info();
     
         $db=M("Member"); //接下来就是自己项目的登陆函数了
         $where['qq_openid']=$openid; //判断此QQ是否注册 唯一标识符openid 在表里加了个qq_openid为唯一
         $isqq=$db->where($where)->find();
         if($isqq){
             //写入登陆状态
             session('user_id', $isqq['id']);
             session('user_name', $isqq['username']); 
             session('user_nickname', $isqq['account']);
             session('user_email', $isqq['email']); 
             session('user_last_time', $isqq['last_time']);
             $save_data['id']=$isqq['id'];
             $save_data['last_time']=time();
             $db->save($save_data);
             $this->success('登陆成功!',U('Member/index'));
         }else{
             $data['qq_openid']=$openid; //QQ登陆唯openid
             $data['username']=$arr['nickname']; //用户名
             $data['nickname']=$arr['nickname']; //网名
             $data['face_url']=$arr['figureurl_2']; //头像
             $data['status']='1'; //用户状态为启用
             //如果用户名存在
             $name['username']=$arr['nickname'];
             $isname=$db->where($name)->find();
         if($isname){
             //用户名存在添加随机数
             $data['username']=$arr['nickname']."_".rand(1000,9999);
         }
         //判断是否写入成功
         if($id=$db->add($data)){
             //写入登陆状态
             session('user_id', $id);
             session('user_name', $data['account']);
             session('user_nickname', $data['account']);
             session('user_email', '未填写');
             session('user_last_time', time());
             $save_data['id']=$id;
             $save_data['last_time']=time();
             $db->save($save_data);
             $this->success('注册成功!',U('Member/index'));
     }else{
         $this->error('注册失败!',U('Member/login'));
         } 
    }
 }
整个thinkphp的qq互联登陆就可以了
赞(0)
未经允许不得转载:诚然博客 » Thinkphp 增加qq互联登陆的功能