您的位置:首页 > 运维架构 > 网站架构

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

2015-12-07 14:47 651 查看
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 模块,这个大家百度配置一下便可

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

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" }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: