前期准备:
使用人家腾讯的功能,总得和人家打招呼吧!
QQ互联首页:http://connect.qq.com/
进入网址后,按如下操作来:
一.进入官网
二.申请创建【网站】应用
三.按要求填写资料
注意网站地址:填写你要设置快速登录的网址,eg:http://www.test.com;
回调地址:填写你发送QQ快速登陆后,腾讯得给你信息,这个信息往此页面接受。eg:http://www.test.com/accept_info.php
【详细的申请填写,请见官方提示,这里不做赘述】
四.申请成功后,完善信息
五.代码部分:
在你对应的PHP文件内写入,如下
方法一,面向过程法(我就记录了一种方法)如果有兴趣可以去看官网或者 来这看看
使用方法:配置
a
p
p
i
d
,
app_id,
appid,app_secret,
m
y
u
r
l
后
,
其
他
原
封
复
制
即
可
,
my_url后,其他原封复制即可,
myurl后,其他原封复制即可,user_data为返回的登录信息
代码:
//应用的APPID
$app_id = “你的APPID”;
//应用的APPKEY
$app_secret = “你的APPKEY”;
//【成功授权】后的回调地址,即此地址在腾讯的信息中有储存
$my_url = “你的回调网址”;
//Step1:获取Authorization Code
session_start();
$code =
R
E
Q
U
E
S
T
[
"
c
o
d
e
"
]
;
/
/
存
放
A
u
t
h
o
r
i
z
a
t
i
o
n
C
o
d
e
i
f
(
e
m
p
t
y
(
_REQUEST["code"];//存放Authorization Code if(empty(
REQUEST["code"];//存放AuthorizationCodeif(empty(code))
{
//state参数用于防止CSRF攻击,成功授权后回调时会原样带回
$_SESSION[‘state’] = md5(uniqid(rand(), TRUE));
//拼接URL
$dialog_url = “https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=”
. KaTeX parse error: Expected 'EOF', got '&' at position 11: app_id . "&̲redirect_uri=" …my_url) . “&state=”
. $_SESSION[‘state’];
echo("”);
}
//Step2:通过Authorization Code获取Access Token
if($_REQUEST[‘state’] == $_SESSION[‘state’] || 1)
{
//拼接URL
$token_url = “https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&”
. “client_id=” . KaTeX parse error: Expected 'EOF', got '&' at position 11: app_id . "&̲redirect_uri=" …my_url)
. “&client_secret=” . $app_secret . “&code=” . $code;
r
e
s
p
o
n
s
e
=
f
i
l
e
g
e
t
c
o
n
t
e
n
t
s
(
response = file_get_contents(
response=filegetcontents(token_url);
if (strpos($response, “callback”) !== false)//如果登录用户临时改变主意取消了,返回true!==false,否则执行step3
{
l
p
o
s
=
s
t
r
p
o
s
(
lpos = strpos(
lpos=strpos(response, “(”);
r
p
o
s
=
s
t
r
r
p
o
s
(
rpos = strrpos(
rpos=strrpos(response, “)”);
r
e
s
p
o
n
s
e
=
s
u
b
s
t
r
(
response = substr(
response=substr(response, $lpos + 1, $rpos - $lpos -1);
m
s
g
=
j
s
o
n
d
e
c
o
d
e
(
msg = json_decode(
msg=jsondecode(response);
if (isset($msg->error))
{
echo “
error:
” . $msg->error;echo “
msg :
” . $msg->error_description;exit;
}
}
//Step3:使用Access Token来获取用户的OpenID
$params = array();
parse_str($response, $params);//把传回来的数据参数变量化
$graph_url = "https://graph.qq.com/oauth2.0/me?access_token=".$params['access_token'];
$str = file_get_contents($graph_url);
if (strpos($str, "callback") !== false)
{
$lpos = strpos($str, "(");
$rpos = strrpos($str, ")");
$str = substr($str, $lpos + 1, $rpos - $lpos -1);
}
$user = json_decode($str);//存放返回的数据 client_id ,openid
if (isset($user->error))
{
echo "<h3>error:</h3>" . $user->error;
echo "<h3>msg :</h3>" . $user->error_description;
exit;
}
//echo("Hello " . $user->openid);
//echo("Hello " . $params['access_token']);
//Step4:使用<span >openid,</span><span >access_token来获取所接受的用户信息。</span>
$user_data_url = "https://graph.qq.com/user/get_user_info?access_token={$params['access_token']}&oauth_consumer_key={$app_id}&openid={$user->openid}&format=json";
$user_data = file_get_contents($user_data_url);//此为获取到的user信息
}
else
{
echo("The state does not match. You may be a victim of CSRF.");
}