接入QQ第三方登录

一、登录QQ互联申请为开发者并创建网站应用

https://connect.qq.com/index.html
在这里插入图片描述
在这里插入图片描述
网站名称这儿必须填备案好的网站的那个名称!否则不予通过!
在这里插入图片描述
申请成功后appid和app key以及网站回调域就能使用:
在这里插入图片描述

二、放置登录按钮

在这里插入图片描述
给其加个超链接,通过http去访问一个接口。

三、获取Authorization Code值

请求地址:https://graph.qq.com/oauth2.0/authorize

参数是否必须含义
response_type必须滴写死的,值为“code”
client_id必须滴你应用的appid
redirect_uri必须滴回调地址
state必须滴client端的状态值(可随意如:test)
成功后返回:
在这里插入图片描述
code就是Authorization Code。

四、通过Authorization Code获取Access Token

请求地址:https://graph.qq.com/oauth2.0/token

参数是否必须含义
grant_type必须滴写死的,值为“authorization_code”
client_id必须滴你应用的appid
client_secret必须滴你应用的appkey
code必须滴上一步所获取的code值
redirect_uri必须滴你的回调地址
注意(有坑):grant_type值就为authorization_code(而不是code值!)
成功后返回:
在这里插入图片描述

五、通过Access Token获取openid

请求地址:https://graph.qq.com/oauth2.0/me

参数是否必须含义
access_token必须滴上一步所获取到的access_token
成功后返回:
在这里插入图片描述

六、通过access_token、appid、openid来获取用户信息

请求地址(有多个):https://graph.qq.com/user/get_user_info

参数是否必须含义
access_token必须滴上上一步所获取到的access_token
appid必须滴申请成功应用上的appid
openid必须滴上一步所获取到的openid
成功后返回:
在这里插入图片描述
至此,QQ第三方登录就完成了。

—————————————————————————————————————————
下面贴出我的回调地址文件中的代码,之前为了赶速度写的,没有进行优化,很乱,但是最终能返回用户的所有信息:

<?php
$code=$_GET['code'];
function curl($url,$postData=[],$headers=[]){
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);      //要访问的地址
    curl_setopt($ch,CURLOPT_HEADER,0);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);     //执行结果是否被返回,0返,1不返
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    if($postData){
        curl_setopt($ch,CURLOPT_TIMEOUT,60);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);
    }
    if(curl_exec($ch)==false){
        $data='';
    }
    else{
        $data=curl_multi_getcontent($ch);
    }
    curl_close($ch);javascript:;
    return $data;
}
$token=curl("https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=xxxxxxxxx&client_secret=xxxxxxxxxxx&code=$code&redirect_uri=http://qq.wangchuangcode.cn/callback.php");
$arry = explode('&',$token);
$arr = array_values($arry);
$arrs = $arr[0];
$ar = explode('=',$arrs);
$access_token = $ar[1];
$datas = curl("https://graph.qq.com/oauth2.0/me?access_token=$access_token");

$result ="";
preg_match_all("/(?:\{)(.*)(?:\})/i",$datas, $result);
$opjs = $result[0][0];
$opjson = json_decode($opjs,true);
$client_id = $opjson["client_id"];
$openid = $opjson["openid"];
$appid = 101551472;
$op_return = curl("https://graph.qq.com/user/get_user_info?access_token=$access_token&appid=$appid&openid=$openid");
$opjson = json_decode($op_return,true);
//$opjson是返回的用户所有信息

版权声明:本文为qq_42249896原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。