博主信息
博文 91
粉丝 2
评论 4
访问量 146859
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
QQ 互联
夏日的烈风的博客
原创
1617人浏览过

模板中的链接  <a href="https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101429405&redirect_uri=http://huangzhuquan.cn/index.php?index/login/qqlogin.html&scope=get_user_info,list_album,upload_pic,do_like">

qq回调函数

    public function qqCallback(){

    //请求accesstoken

       // Step2:获取Authorization Code

        $code = $_GET['code'];


        // Step3:通过Authorization Code获取Access Token

        $url = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101434622&client_secret=2440d1055d7ec8857a659e1304537bce&code='.$code.'&redirect_uri==http://huangzhuquan.cn/index.php?index/login/qqlogin.html';

        $res = https_request($url);

        // 返回的数据

        // access_token=YOUR_ACCESS_TOKEN&expires_in=3600

        // 切割字符串 获取access_token

        $res = explode('&', $res);

        $res = explode('=',$res[0]);

        $access_token = $res[1];


        // Step4:使用Access Token来获取用户的OpenID

        $openid_url = 'https://graph.qq.com/oauth2.0/me?access_token='.$access_token;

        $openid = https_request($openid_url);

        $rep = array("callback(",");\n");

        $jsonopenid = str_replace($rep, "", $openid);

        // $josnopenid 用户id 

        $josnopenid = json_decode($jsonopenid);


        // 获取返回包 获取openid

        if (strpos($openid, "callback") !== false)

        {

        $lpos = strpos($openid, "(");

        $rpos = strrpos($openid, ")");

        $openid = substr($openid, $lpos + 1, $rpos - $lpos -1);

        }

        $user = json_decode($openid,true);

        // Step5:使用Access Token以及OpenID来访问和修改用户数据

        $userinfo_url = 'https://graph.qq.com/user/get_user_info?access_token='.$access_token.'&oauth_consumer_key=101434622&openid='.$openid_info;

        $userinfo = https_request($userinfo_url);

        // uinfo 用户信息对象

        $uinfo = json_decode($userinfo);

        var_dump($uinfo);die;

        $arr = [$josnopenid->openid, $uinfo->nickname, $uinfo->gender, $uinfo->figureurl_2];

         // 修改信息

        $sex = ($uinfo->gender=='男')?'1':'0';

        // 查看id是否登记过

        $findid = DB::name('user')->where('openid',$josnopenid->openid)->select();

        if($findid){

            // 找得到该id,直接登录

            Session::set('index_name',$uinfo->nickname);

            Session::set('index_id',$findid[0]['id']);

            return $this->redirect('index/index/index');

        }else{

            // 注册

            $insertid = DB::name('user')->insertGetId(['openid'=>$josnopenid->openid, 'name'=>$uinfo->nickname, 'status'=>1]);

            $insertinfo = DB::name('user_info')->insertGetId(['sex'=>$sex, 'photo'=>'default.jpg', 'addtime'=>time()]);

            $ui_id = DB::name('ui_id')->insert(['user_id'=>$insertid, 'user_info_id'=>$insertinfo]);

            Session::set('index_name',$uinfo->nickname);

            Session::set('index_id',$insertid);

            return $this->redirect('index/index/index');

        }

    }




    // 这里是封装的curl 的 get 和post 方法 qq登录

    function https_request($url,$data)

    {

        // curl 初始化

        $ch = curl_init();


        // 参数设置 

        curl_setopt($ch,CURLOPT_URL,$url);

        curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);

        curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);


        // 这里进行 判断

        if ( !empty($data) ) {

        curl_setopt($ch, CURLOPT_POST, 1);

        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);


        }

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        // 执行

        $res = curl_exec($ch);

        // curl_close($ch);

        return $res;

    }

 



本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学