zoukankan      html  css  js  c++  java
  • TP5.1实现QQ登录

    /*QQ登录*/
        public function token(){
            $app_id = "***";  //替换即可
            $app_secret = "***";  //替换即可
    
            //成功授权后的回调地址
            $my_url = urlencode("http://***.com/index/User/token");
    
            //获取code
            $code = $_GET['code'];
    
            //Step2:通过Authorization Code获取Access Token
            $token_url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=".$app_id."&redirect_uri=".$my_url."&client_secret=".$app_secret."&code=".$code."";
    
            //file_get_contents() 把整个文件读入一个字符串中。
            $response = file_get_contents($token_url);
    
            //Step3:在上一步获取的Access Token,得到对应用户身份的OpenID。
            $params = array();
            //parse_str() 函数把查询字符串('a=x&b=y')解析到变量中。
            parse_str($response,$params);
            $graph_url = "https://graph.qq.com/oauth2.0/me?access_token=".$params['access_token']."";
            $str = file_get_contents($graph_url);
            // dump($str);die;
            // --->找到了字符串:callback( {"client_id":"YOUR_APPID","openid":"YOUR_OPENID"} )
            //
            // strpos() 函数查找字符串在另一字符串中第一次出现的位置,从0开始
            if(strpos($str,"callback")!==false){
                $lpos = strpos($str,"(");
                // strrpos() 函数查找字符串在另一字符串中最后一次出现的位置。
                $rpos = strrpos($str,")");
                //substr(string,start,length) 截取字符串某一位置
                $str = substr($str,$lpos+1,$rpos-$lpos-1);
            }
            // json_decode() 函数用于对 JSON 格式-->{"a":1,"b":2,"c":3,"d":4,"e":5}<--的字符串进行解码,并转换为 PHP 变量,默认返回对象
            $user = json_decode($str);
            // dump($user->openid);die; 
            session('openid',$user->openid,SESSIONINDEX);
    
            //Step4: 调用OpenAPI接口,得到json数据,要转换为数组
    
            $arr = "https://graph.qq.com/user/get_user_info?access_token=".$params['access_token']."&oauth_consumer_key=".$app_id."&openid=".$user->openid."";
            //加上true,得到数组,否则默认得到对象
            $res = json_decode(file_get_contents($arr),true);
    //         dump($res['nickname']);dump($res);die;
        
    //下方写逻辑即可 }
  • 相关阅读:
    iview modal关闭问题 自动关闭、异步关闭、定时关闭
    关于localStorage和sessionStorage
    promise简单应用
    Vue(JavaScript)按照内容搜索和排序功能实现
    javascripit常用的验证工具
    vue中$refs的用法及作用
    JS遍历数组的三种方法:map、forEach、filter
    Vue项目搭建,Git提交分支,token验证登录流程(重点)
    axios捕获401 赋值token
    Quartus系列:Quartus II 原理图输入设计
  • 原文地址:https://www.cnblogs.com/zyfeng/p/12877900.html
Copyright © 2011-2022 走看看