QQ授权网站进行登录~php篇

来源:互联网 发布:淘宝聚划算团购每一天 编辑:程序博客网 时间:2024/05/01 00:49

Thinkphp实现http://jingyan.baidu.com/article/e4511cf33e3e9f2b845eafa4.html

实现思路

对QQ登录的官方SDK进行了一些修改,使其更加容易的整合到自己的网站上去。

使用说明:

1、到http://connect.qq.com/ 申请QQ登录的appid、appkey。

2、将QQ登录接口解压,然后把整个qq目录上传到你的网站上去。

3、运行http://你的域名/qq/install.php,对QQ登录进行配置。

4、对数据库的用户表增加两个字段,access_token(varchar(50))、openid(varchar(50))。

5、打开qq/config.php,将里面的数据库连接、用户表信息修改为你网站上对应的信息,然后上传覆盖。

6、打开qq/oauth.php,将第12行、25行修改为你网站登录成功后是如何用session保存用户id的。

7、打开qq/bind.php,将第12行、46行修改为你网站登录成功后是如何用session保存用户id的。

8、将<a href="http://www.php1.cn/"> 转载请注明来源:快速将QQ登录接口整合到你的网站上去
http://www.php1.cn/Content/KuaiSuJiang_QQ_DengLuJieKouZhengHeDaoNiDeWangZhanShangQu.html


申请及其问题总结

1.打开open.qq.com   添加创建应用:-》输入常规的数据  你会看到对应的APP ID和KEY值,这是对你身份证的唯一的验证


2.打开 http://connect.qq.com/manage/  点击->添加网站->输入相关信息  这里比较特别注意的是,回调地址那里填上你域名就可以了以上申核需要一到两天时间,耐心等待。。。

3.打开http://wiki.opensns.qq.com/wiki/%E3%80%90QQ%E7%99%BB%E5%BD%95%E3%80%91%E7%BD%91%E7%AB%99%E6%8E%A5%E5%85%A5找到SDK库下载,我在这里下载是官方的php SDK包,如果你的虚拟空间file_get_contents不技持https,可以考虑用curl函数来替代,好多童鞋常常因为获取不到access_token也就是这个原因。任何一个包不是一气呵成了,还需你配置相关的配置,这个繁索的调试过程我就在这里展开谈了。说说原理->通过你的网站登陆QQ state和scope->获得access_token->再获得每个QQ唯一的身份ID  openid

4.在这里你调试成功后,获得ID后,还需和你当前网站帐号绑定,才能下次登陆的时候自动去识别你的相关绑定帐号内容 

常见问题:

1.Warning: session_start() [function.session-start]: open(/tmp\sess_s9b1ahi6vnvc0pfl2e0dcd0l10, O_RDWR) failed: 解决方法:No such file or directory (2) inD:\powhost\bbcarblog\web\test\qqSDK\comm\session.php on line 196 

找到sssion.php session_save_path  加上注释//,注释掉设置路径

2.Notice: file_get_contents() [function.file-get-contents]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP? inD:\powhost\bbcarblog\web\test\qqSDK\comm\utils.php on line 37 
解决方法:找到 Utils.php  function get_url_contents 函数内容直接用下面代码替代,因为file_get_content默认不支持访问https,如果要支持需配置php.ini,激活 php_openssl.dll 模块,这个大家百度配置一下便可
 

  1. $ch = curl_init();    
  2.     curl_setopt($ch, CURLOPT_URL,$url);    
  3.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    
  4.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);    
  5.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    
  6.     $result = curl_exec($ch);    
  7.     return $result  
分布获取信息

1.授权登录

http://openapi.qzone.qq.com/oauth/show?which=ConfirmPage&display=pc&response_type=code&client_id=101223150&redirect_uri=http://t.zy62.com/qqlogin.php


得到code


2.获取access_token


https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101223150&redirect_uri=http://t.zy62.com/qqlogin.php&client_secret='换成你自己的'&code=7A94789A36833731F7DED5C170BDA4FC

返回结果:

access_token=72103010DD08905F8B171E4EF378B5CC&expires_in=7776000&refresh_token=53303C0A75719EED9E3CDF01C3476955



3.获取openid

https://graph.qq.com/oauth2.0/me?access_token=72103010DD08905F8B171E4EF378B5CC

返回结果:标准jsonp格式

callback( {"client_id":"101223150","openid":"9ECFD84190F7D5D40E013CF84D0979FF"} );


4.获取用户资料


https://graph.qq.com/user/get_user_info?access_token=72103010DD08905F8B171E4EF378B5CC&oauth_consumer_key=101223150&openid=9ECFD84190F7D5D40E013CF84D0979FF&format=json


参数: access_token,appid,openid


返回结果:

{ "ret": 0, "msg": "", "is_lost":0, "nickname": "yi.", "gender": "女", "province": "湖北", "city": "武汉", "year": "1994", "figureurl": "http:\/\/qzapp.qlogo.cn\/qzapp\/101223150\/9ECFD84190F7D5D40E013CF84D0979FF\/30", "figureurl_1": "http:\/\/qzapp.qlogo.cn\/qzapp\/101223150\/9ECFD84190F7D5D40E013CF84D0979FF\/50", "figureurl_2": "http:\/\/qzapp.qlogo.cn\/qzapp\/101223150\/9ECFD84190F7D5D40E013CF84D0979FF\/100", "figureurl_qq_1": "http:\/\/q.qlogo.cn\/qqapp\/101223150\/9ECFD84190F7D5D40E013CF84D0979FF\/40", "figureurl_qq_2": "http:\/\/q.qlogo.cn\/qqapp\/101223150\/9ECFD84190F7D5D40E013CF84D0979FF\/100", "is_yellow_vip": "0", "vip": "0", "yellow_vip_level": "0", "level": "0", "is_yellow_year_vip": "0" }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//print_r($_GET);
//exit('qqlogin');
//1.获取code
$code=$_GET['code'];
//2.获取access_token
$url='https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=101223150&redirect_uri=http://t.zy62.com/qqlogin.php&client_secret='换成你自己的'&code='.$code;
$rs=file_get_contents($url);
$arr=explode('&',$rs);
//print_r($arr);
 
//3获取openid
$url='https://graph.qq.com/oauth2.0/me?'.$arr[0];
$rs=file_get_contents($url);
echo $rs;

0 0