这两天把自己自己的博客终于改了一下版,以前都好长时间没打理过了,这段时间有时间了。终于想起了自己还有一个博客。以前是用的Icms搭建的。虽然功能比较多,但是对于个人博客来说,有很多的功能都用不上。而且如果要二次开发的话,最好还是自己动手写一个博客程序吧。
本博客后台和前台采用的是贤心的layui框架来写的。不得不说贤心的这个layui框架,真心很不错。很值得大家学习一下。
好了,废话不多说了。下面进入主题,怎么在自己的网站上加上QQ登陆功能呢?
第一步:你需要去QQ开放平台申请一个网站应用。
申请网址:http://open.qq.com。提交资料之后,腾讯官方需要审核你的资料。首先他们要检查的就是你自己的网站上面显眼的地方或者适当的位置,是否放置了QQ登陆的图标。这个图标,他们有提供,自己动手能力强的也可以自己做一个。我的图片是自己用QQ的形像做的,放置在网站顶部导航的右边位置,如下图。
申请后,我们会得到一个app_id 和app_key。app_id是你这个应用的一个ID号。app_key是一串密钥。
第二步:在自己的网站上面的QQ图标添加一个登陆请求的链接。
地址:https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=您的App_id&redirect_uri=申请时填写的回调地址&state=这里随便写(可以写一个时间戳)。
第三步:这个链接会GET一个code和state给你,直接可以用$_GET['code']就获取到。
第四步:我们需要用这个code的值再去获取一个token. 这个token很重要,
地址:https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=您的APPID&client_secret=你的APPKEY&code=上面GET过来的code值&state=GET的state值&redirect_uri=你填写的回填地址
第五步:得到token值之后,再通过下面的地址,获取QQ的 openid 这个openid 就好比是每个QQ号码的身份证号码一样。每个人都不一样的。
请求地址:https://graph.qq.com/oauth2.0/me?access_token=上面获取到的token值。
第六步:上面的地址会返回当前登陆QQ的openid。
有了openid,token,appid这三个值了,下面我们就可以利用这三个值来获取用户的QQ信息了。
请求地址:https://graph.qq.com/user/get_user_info?access_token=token值&oauth_consumer_key=appid&openid=openid
第七步:如果不出问题的话,系统就会把QQ的信息用json的方式返回给你了。格式如下。
{ "ret":0, "msg":"", "nickname":"Peter", "figureurl":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/30", "figureurl_1":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/50", "figureurl_2":"http://qzapp.qlogo.cn/qzapp/111111/942FEA70050EEAFBD4DCE2C1FC775E56/100", "figureurl_qq_1":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/40", "figureurl_qq_2":"http://q.qlogo.cn/qqapp/100312990/DE1931D5330620DBD07FB4A5422917B6/100", "gender":"男", "is_yellow_vip":"1", "vip":"1", "yellow_vip_level":"7", "level":"7", "is_yellow_year_vip":"1" }
第八步,我们现在就可以解析上面的这些信息,保存在自己的网站数据库里面,比如,绑定自己网站上面的用户,或者新注册用户等。这些就根据自己网站的功能来终于利用上面返回的信息就行了。
看着是比较麻烦,因为查询用户的信息,需要三个值:一个是应用的app_id。一个是token,相当于是授权码一样。一个是QQ的openid 。有了这三个值就可以查询。前面的步骤都是为了获取到授权权token和QQ的openid.
如果你觉得麻烦的话,没关系,可以参考下面我自己用PHP写的QQ登陆代码.直接把下面的代码保存回你的回调地址文件名。然后,在网站上面的QQ登陆图片上面把超级链接地址直接改为本文件地址就行了,
比如:<a href="/api/qqlogin.php"><img src="QQ登陆的图片地址" /></a>
好了,今天的关于在自己的网站上面加QQ登陆的功能就说到这里吧。感谢大家关注:小雷的博客 http://www.leihx.com
欢迎交换友情链接。谢谢!
<?php //==========基本配制信息============= //用户在开放中心申请的appid $appid = "您的应用ID"; //用户在开放中心申请的appkey $appkey = "您的应用密钥"; //回调地址要url编码;必须要和申请时候填写的一至 $callbackurl = urlencode("你申请应用时填写的回调地址可以把本代码保存为一个PHP文件,当回调地址"); //=============下面开始============= //第一步回调时候返回来的code,得到这个code后,还要进行请求获取token $code = $_GET['code']; $state = $_GET['state']; if(!empty($code)){ //得到code后可以通过下面这个地址是获取token $url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=".$appid."&client_secret=".$appkey."&code=".$code."&state=".$state."&redirect_uri=".$callbackurl; $t = file_get_contents($url); //下面这行是返回给我们的信息我们需要把access_tokenw值提取出来 //access_token=69*******8F32&expires_in=7******0&refresh_token=4*******C $t = explode("=",$t); $t = explode("&",$t[1]); $token = $t[0]; //token值分解出来了,例如:69*******8F32 //得到token后通过下面的地址获取用户openid; $url = "https://graph.qq.com/oauth2.0/me?access_token=".$token; $t = file_get_contents($url); //系统返回给我们下面的格式的信息 // callback( {"client_id":"您的应用ID","openid":"1B*******5C"}); //我们把返回的信息{}之外的信息都去掉,让他成为一个正确的json格式。 $t = json_decode(strstr(strstr($t,")",true),"{"),true);//得到了去掉多余字符串的json; //得到了openid $openid = $t['openid']; //通过下面的地址来获取用户的详细信息 $url = "https://graph.qq.com/user/get_user_info?access_token=".$token."&oauth_consumer_key=".$appid."&openid=".$openid; //这个地址会把用户的QQ信息以json的方式返回给我们。 $t = file_get_contents($url); //我们用PHP的json_decode把json转换成数组的方式。 $t = json_decode($t,true); //这里的就得到了用户的信息了。 var_dump($t);//可以输出数组,看看都有哪些内容 /* 这里就是你自己要处理这些信息的代码了,由你自己开发了。 其它问题请关注我的博客,小雷的博客 http://www.leihx.com */ } //下面这个地址就是第一步用来获取code值的url 你可以把本页所有代码保存为你的回调地址的PHP文件。然后,在网站上面的QQ图标上面加一个超级链接到本文件的地址就行了。打开这个文件的时候,就会自动跳转到下面的网址上面去。 $url = " https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=".$appid."&redirect_uri=".$callbackurl."&state=".time(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <!--打开本页的时候会自动打开上面获取code的网址--> <meta http-equiv="refresh" content="0.2;url=<? echo $url?>"> <!--上面这一句就是自动跳转的,意思就是打开页文件自动转到指定的地址上面去--> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>小雷QQ登陆</title> </head> <body> </body> </html>