php qq授权_网站接入QQ登录(PHP版)【最新教程 05.14更新】,亲身失败百次的总结...

news/2024/5/20 4:45:31/文章来源:https://blog.csdn.net/weixin_42626820/article/details/115092234

开发阶段(偏前端的同学可以查看 JS版 教程)

3.1. QQ互联 官网提供了 SDK 以及对应的 示例代码,但是为了帮助同学们更好理解,我进行了部分删减,力求最简单的方法实现目的。

e28eb101c32b

官方SDK

3.2. 因为是写教程,所以代码就尽量简单明了一点。实际上 'PHP' 网站接入 'QQ登录' 非常简单,原则上只需要自己编辑如下图所示的 2个 'PHP' 脚本:

e28eb101c32b

Code

callback.php # 用于【QQ互联】中已经通过审核的回调地址

index.php # 用于需要接入【QQ登录】的网站入口

3.3. 复制 QQ互联 官方 SDK 包中的 'API' 目录到自己的 'Web根目录',生成如下所示的 'Web目录' 结构:

# 'D:/www/website/'

..............other statis................

~~~~~/API <<<<<< 官方 SDK 中的文件夹

......................other statis..............

~~~~~callback.php <<<<<< 回调地址文件

~~~~~index.php <<<<<< 网站入口

3.4. 在 'API' 的子目录 '/comm' 下新建 'inc.php',输入以下内容:

<?php die('forbidden'); ?> // 防止恶意访问文件内容,下面的内容不能使用换行符

{"appid":"改成你自己的AppID","appkey":"改成你自己的AppKey","callback":"改成你已经通过审核的回调地址","scope":"get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idolist,add_idol,del_idol,get_tenpay_addr","errorReport":false,"storageType":"file","host":"localhost","user":"root","password":"root","database":"test"}

3.5. 在 'index.php' 文件中输入以下内容:

require_once('./API/qqConnectAPI.php'); // 'qqConnectAPI.php'中已经启用了 session

if (!empty($_SESSION['user_info'])) // 检查是否使用'QQ登录'过网站

{

$qc=new QC;

$qc->qq_login(); // 跳转到'QQ登录'的界面

exit;

}

$user=json_decode($_SESSION['user_info'],true);

var_dump($user);

?>

......................other HTML code..............

3.6. 在 'callback.php' 文件中输入以下内容:

require_once('./API/qqConnectAPI.php');

define('USERLIST','./userList.json'); // 本地缓存登录的、已经授权网站的'QQ用户'

$qc=new QC();

$access_token=$qc->qq_callback();

$open_id=$qc->get_openid();

/**

非常重要的一行代码,

因为后面需要获取QQ用户的信息,

所以需要使用前面确认登录的、已经授权网站的'QC'实例

**/

$qc=new QC($access_token,$open_id);

$storage=[];

if(is_file(USERLIST)) $storage=json_decode(file_get_contents(USERLIST),true);

if(count($storage)){

if (array_key_exists($open_id,$storage)) {

/**

检查当前用户是否自定义的过期时间

**/

if($storage[$open_id]['expires']>$_SERVER['REQUEST_TIME']){

$_SESSION['user_info']=json_encode([

'username'=>$storage[$open_id]['username'],

'_id'=>$storage[$open_id]['_id']

]);

header('location:http://www.example.com/index.php'); // 填写上面'index.php'对应的网站入口地址

exit;

}

}

}

$user_info=$qc->get_user_info(); // 获取'QQ用户'的基本信息

$storage[$open_id]=[

'accessToken'=>$access_token,

'username'=>$user_info["nickname"],

'expires'=>$_SERVER['REQUEST_TIME']+3600*3,

'_id'=>strval($_SERVER['REQUEST_TIME']) // 自建'QQ用户ID',用于网站内部查询缓存

];

$_SESSION['user_info']=json_encode([

'username'=>$user_info['nickname'],

'_id'=>$storage[$open_id]['_id']

]);

file_put_contents(USERLIST,json_encode($storage));

header('location:http://www.example.com/index.php'); // 填写上面'index.php'对应的网站入口地址

exit;

3.7. 最后,再回过头去检查 '3.4小节' 提到的 'inc.php' 中设置的 'appid'、'appkey'、'callback' 是否与 QQ互联 中通过审核的网站应用信息一致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_749097.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器网站首页被被修改,为什么网站首页被降权 原因和解决方法分析

小小课堂seo&#xff1a;最近看到不少人再说网站首页被百度搜索引擎降权&#xff0c;到底为什么首页会被降权?我们可以做哪些调整来恢复网站首页权重?今天&#xff0c;小小课堂网为大家带来的是网站首页被降权的原因和解决方法。小小课堂seo希望对大家有所帮助。一、为什么网…

好资源网站

正文字体大小&#xff1a;大 中 小好资源网站 (2011-01-06 11:31:17) 转载▼标签&#xff1a; it 分类&#xff1a; 电子商务1.酷网代码;http://www.5icool.org非常不错 网页特效---焦点幻灯图片特效 导航菜单 广告代码 在线客服 表单按钮 其它特效 网页教程----HTML CSS Jav…

高斯模糊java代码_“网站变灰”背后的代码实现

在刚刚过去的几个月里&#xff0c;我们的国家经历了非常惨痛的时刻&#xff0c;很多英雄在救助和保护他人的路上倒下。前天(4月4日)&#xff0c;清明节&#xff0c;全国降半旗&#xff0c;10点全国默哀三分钟&#xff0c;以致敬英雄和缅怀逝去的同胞们。当天一切公共娱乐活动也…

基于WebSphere与Domino的电子商务网站构架分析

转载于:https://blog.51cto.com/chenguang/470852

我记录网站综合系统 -- 技术原理解析[4:我记录框架 路由系统]

源代码位置&#xff1a;wojilu.Web.Mvc.Processors&#xff1a;RouteProcessor.cs&#xff1a;wojilu.Web.Mvc.Routes &#xff1a;RouteTool.cs 客户端向服务器发送请求&#xff0c;主要是通过 url 链接的形式&#xff0c;是 url 告诉了服务器&#xff0c;应该返回什么样的…

用access作为.net网站的数据库,在windows2003上配置出现,出错不能访问。

最近在将做好的毕业设计挂在服务器上浏览&#xff0c;总是出现错误&#xff0c;无法访问。网上查了很多方法&#xff0c;感觉都没有很好的答案&#xff0c;发表一下&#xff0c;和大家一起共享一下。希望大家多多提建议。 我的数据库是access2007&#xff0c;首先&#xff0c;由…

asp.net mvc 2.0+Silverlight播放器开发的TeamVideo视频播放网站--系列2

这几天抽空写第二部分。很高兴今天能够和大家分享下。我这是个asp.net mvc的新手。。。希望各位提出宝贵的意见。 你可以在这里查看第一部分的内容。http://www.cnblogs.com/n-pei/archive/2010/08/30/1812981.html 按照之前计划&#xff0c;这一部分的内容如下&#xff1a; 1.…

锦绣蓝图:怎样规划令人流连忘返的网站(第2版)(全彩印刷,信息架构之父R. S. Wurman隆重推荐)...

锦绣蓝图:怎样规划令人流连忘返的网站(第2版)&#xff08;全彩印刷&#xff0c;信息架构之父R. S. Wurman隆重推荐&#xff09;【原 书 名】 Information Architecture: Blueprints for the Web (2nd Edition) 【原出版社】 New Riders Press 【作  者】(美)Christina Wodt…

网站(bs系统)怎样实现即时消息思路总结

为什么80%的码农都做不了架构师&#xff1f;>>> 1.ajax刷新 2.flashsocket(推荐,网页游戏多用这个) 3.DWR用来做即时通讯很方便 4.Comet 有时也称反向 Ajax 或服务器端推技术&#xff08;server-side push&#xff09;&#xff0c;这个东西其实就是长连接&#xff…

手机php网站不显示图片,javascript,_手机页面用innerHTML拼接的图片不显示,javascript - phpStudy...

手机页面用innerHTML拼接的图片不显示测试代码input,button{height:35px;}add function addEmotion(t){alert(t);}var addfunction(){var prefixhttp://192.168.1.100:88/emotion/images/;var emotion[hi,yes,good];var html[];for(var i0;ihtml.push("");}document.…

计算机的电子邮件地址怎么看,电脑使用小技巧:如何找出网站上隐藏的电子邮件地址?...

当访问有些网站时&#xff0c;有时我们需要与网站进行联系&#xff0c;可是点击网站上的“联系我们”时&#xff0c;并没有出现详细的联系信息&#xff0c;比如&#xff1a;地址&#xff0c;邮件&#xff0c;电话等&#xff0c;电脑反而弹出outlook邮件客户端程序。如果我们平时…

dwz框架在网站群项目中的应用(3)—html拓展之控件组件篇

每个页面中由不同的控件和组件提供不同的功能&#xff0c;在“dwz框架”下应用框架的规则只要写简单的html代码就可以写出实用的控件或组件&#xff0c;在项目中用的比较多的有&#xff1a;文本框、日历控件、combox组件、分页组件&#xff0c;下面将继续以项目中的实例介绍这些…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

Smint – 用于单页网站制作的 jQuery 导航菜单插件

Smint 是一款用于实现单页风格网站的 jQuery 导航插件&#xff0c;包含两部分&#xff1a;固定在页面顶部的精美导航条和能够在你点击的时候自动滚动到对应内容的菜单按钮。Smint 使用非常简单&#xff0c;只有一个参数用于设置页面滚动的速度&#xff0c;默认是 500 毫秒&…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演变&#xff0c;再加上近来感觉有不少同学都很难明白为什么…

转一篇架构师间的问答------如何对应大数据量网站的考验

提问嘉宾&#xff1a; 林昊&#xff0c;网名BlueDavy&#xff0c;China OSGi User Group Director&#xff0c;淘宝网平台架构部架构师&#xff0c;个人的研究方向主要为Java模块化、动态化系统的构建以及高性能的大型分布式Java系统的构建。曾编写《OSGi实战》和《OSGi进阶》…

《大型网站技术架构》读书笔记 - 网站的技术升级路线

《大型网站技术架构》读书笔记 - 网站的技术升级路线 本文描述网站从小到大演变过程中的技术升级路线&#xff1b; 1.初始架构 一台服务器&#xff0c;应用、DB、文件都在一块&#xff0c;使用经典的LAMP模式构建整个站点&#xff1b; 优点很明显&#xff0c;开发部署都简单&am…

历史最全Transformer注意力机制综述论文、代码及网站资源整理分享

Google于2017年6月在arxiv上发布了一篇非常经典的文章&#xff1a;Attention is all you need&#xff0c;提出了解决sequence to sequence问题的transformer模型&#xff0c;该文章使用全Attention的结构代替了LSTM&#xff0c;抛弃了之前传统的encoder-decoder模型必须结合CN…

网站架构的伸缩性设计

网站开发初期&#xff0c;我们习惯性把所有代码都写到一个项目中。前台、后台、缓存、数据库、静态资源... 等等。网站系统物理分离慢慢的系统会原来越大&#xff0c;很显然需要面对大量用户的高并发访问和存储海量数据。很多用户的请求&#xff0c;不可能在一台服务器上完成。…