第三方登陆,QQ互联

//抓取网页、模拟url访问
public function get_contents($url){

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //强制协议为1.0
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));//头部要送出'Expect: '
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );//强制使用IPV4协议解析域名
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$response =  curl_exec($ch);
curl_close($ch);


return $response;
}
//第三方QQ登录
public function qqlogin(){

$appid = '****';
$url = "https://graph.qq.com/oauth2.0/authorize";
$redirect_uri = site_url('member/qqback');
$state = md5(rand()); 
$_SESSION['state'] = $state; 
$login_url = "$url?response_type=code&client_id=$appid&redirect_uri=$redirect_uri&state=$state";
header("Location:$login_url");
}
//token
public function q_token($code){

$appid = '****';
$appkey = '****';
$token_url = "https://graph.qq.com/oauth2.0/token";
$redirect_uri = site_url('member/qqback');
$url = "$token_url?grant_type=authorization_code&client_id=$appid&client_secret=$appkey&code=$code&redirect_uri=urlencode($redirect_uri)";

$response = $this->get_contents($url);
$params = array();
parse_str($response, $params);
$access_token = $params["access_token"];
if($access_token){
redirect("member/q_openid/$access_token",'location');
}else{
redirect('member/qqlogin','location');
}

}
//openid
public function q_openid($access_token){

$openid_url = "https://graph.qq.com/oauth2.0/me";
$url = "$openid_url?access_token=$access_token";
$response = $this->get_contents($url);
if(strpos($response, "callback") !== false){


$lpos = strpos($response, "(");
$rpos = strrpos($response, ")");
$response = substr($response, $lpos + 1, $rpos - $lpos -1);
}
$user = json_decode($response);
$openid = $user->openid;
if($openid){
if($this->user->qqlogin_sel($openid)){
redirect('member/index_member','location');
}else{
redirect("member/q_user/$access_token/$openid",'location');
}
}else{
redirect('member/qqlogin','location');
}
}
//get_user_info_url
public function q_user($access_token,$openid){

$appid = '****';
$appkey = '****';
$get_user_info_url = "https://graph.qq.com/user/get_user_info";
$url = "$get_user_info_url?oauth_consumer_key=$appid&access_token=$access_token&openid=$openid&format=json";
$response = $this->get_contents($url);
$user = json_decode($response);
$nickname = $user->nickname;
if($this->user->qq_insert($openid,$nickname)){
if($this->user->qqlogin_sel($openid)){
redirect('member/index_member','location');
}else{
echo '登陆失败';
}
}else{
echo '登陆失败';
}
}
//第三方QQ回调
public function qqback(){


$code = $_GET['code'];
redirect("member/q_token/$code",'location');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值