php QQ登录

放置按钮:
如在首页 index.php 中放如下代码(即放按钮)
<a href="qq/index.php">QQ登录</a>

然后跳转到 qq/index.php 文件中,代码如下:
$url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]"
header("Location:" . $url);

接着会跳转到 redirect_uri=[YOUR_REDIRECT_URI] 里面指定的值 [YOUR_REDIRECT_URI],如 qq/callback.php
同时会带有 ?code=value 的值

在qq/callback.php代码如下:

$code = $_GET[‘code‘];
$url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=[YOUR_APPID]&client_secret=[APP KEY]&code=". $code ."&state=lin3615&redirect_uri=" . urlencode("http://www.xxxx.net/qq/callback.php");
// get_contents($url)用用获取返回的数据
    function get_contents($url){
       if (ini_get("allow_url_fopen") == "1") {
            $response = file_get_contents($url);
        }else{
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            curl_setopt($ch, CURLOPT_URL, $url);
            $response =  curl_exec($ch);
            curl_close($ch);
        }

        return $response;
    }
        $response = get_contents($url);
        // 解析数据,里面有$access_token值
        parse_str($response);
        //callback($str)把json格式转为 数组形式
function callback($str)
{
    return json_decode($str, true);
}
        $url = "https://graph.qq.com/oauth2.0/me?access_token=" . $access_token;
        $callback = get_contents($url);
        $callback = str_replace("(", "(‘", $callback);
        $callback = str_replace(")", "‘)", $callback);
        eval(‘$data=‘.$callback);

        // openid
        $openid = $data[‘openid‘];

$url = "https://graph.qq.com/user/get_user_info?access_token=$access_token&oauth_consumer_key=[YOUR_APPID]&openid=" . $openid;

$dd = get_contents($url);
$dd = json_decode($dd, true);
print_r($dd);
//其中 $dd 就是相关的QQ信息数组

以下就连接数据库;
假如如下数据表
user:用户表,正常的非QQ登录,字段有:
uid 自增
name 用户名
password 密码
.....

qqconnect:QQ连接表,QQ连接时用的,字段有:
quid uid与 user表中的 uid 对应
openid $opendid
access_token $access_token
......

连接数据库
$link = mysql_connect();
$sql = "select quid from qqconnect where openid= ‘{$openid}‘ and access_token = ‘{$access_token}‘";
$res = mysql_query($sql, $link);
// 如是如果已经存在,
if($res && mysql_num_rows($res))
{
    $row = mysql_fetch_assoc($res);
    $uid = $row[‘quid‘];
    $query = "select * from user where uid = ‘{$uid}‘";
    $rr = mysql_query($query, $link);
    $rrs = mysql_fetch_assoc($rr);
    $_SESSION[‘uid‘] = $rrs[‘uid‘];
    $_SESSION[‘name‘] = $rrs[‘name‘];
    header("Location:" . 首页);
}else
{
// 不存在,就直接显示绑定表单
    echo "<from>";
    echo ‘‘;
    echo "</from>";
}

php QQ登录,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。