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;
//下方写逻辑即可 }