昨天晚上在调试接入QQ登录的时候,感觉一切文件路径以及配置参数都没什么问题了,准备在线上测试的时候,却一直无法登录成功,返回的错误码100007,错误提示是:The state does not match. You may be a victim of CSRF, 也就是state错误,可以锁定错误原因是$_REQUEST['state'] == $_SESSION['state']

在点击QQ登录按钮后,弹出QQ登录新窗口

我把此时的URL复制下来了:https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=101666584&redirect_uri=http%3A%2F%2Facm.webturing.com%2FJudgeOnline%2FQQ_Oauth%2Fcallback.php&state=e82996d687eb64ae2505468c6ec22b66&scope=get_user_info,add_share,list_album,add_album,upload_pic,add_topic,add_one_blog,add_weibo

此时state是:e82996d687eb64ae2505468c6ec22b66

点击QQ登录后就报错了:

此时的URL是:http://acm.webturing.com/JudgeOnline/QQ_Oauth/callback.php?code=7BB5BF6A4045E3780300FB33EFFC7F95&state=e82996d687eb64ae2505468c6ec22b66

可以看到state并没有发生变化,此时URL中的state是:e82996d687eb64ae2505468c6ec22b66
说明前后登录前后state并没发生变化,但为什么$_REQUEST['state']不等于$_SESSION['state']呢,可以看到在报错信息中,$_SESSION['state']确实不是刚才的值(我截图没截全,失误失误)

我刚开始想不通为什么$_SESSION['state']前后不一致,因为我并没有给$_SESSION['state']重复赋值呀,然后我才想到可能是域名的原因,我刚开始访问的时候,用的是oj.ahstu.cc,回调地址的域名是acm.webturing.com,虽然域名不同, 但是绑定的是同一个服务器同一个项目,但我猜测是Session是跟域名有关,而不是跟服务器有关,只要不同的域名下的Session不同,所以我刚开始的$_SESSION['state']是存到了oj.ahstu.cc域名下,后面登录后的访问的是acm.webturing.com$_SESSION['state'],两个域名的$_SESSION['state']不同,所以导致$_REQUEST['state']$_SESSION['state']不相等。

为了验证我的想法,我然后使用acm.webturing.com域名访问我的QQ登录页面,果然,可以成功登录了。

等过两天完成QQ登录后,我将发放我的完整QQ登录代码,代码一定非常简单,嘻嘻*_*

接入QQ互联(QQ登录)时,$_REQUEST['state'] == $_SESSION['state'] CSRF验证失败,原因是访问域名和回调域名不一致(虽然两个域名绑定的是同一个服务器的项目)相关推荐

  1. QQ互联聚合登录中转API程序源码

    介绍: QQ互联彩虹聚合登录中转API是一个快速登录界面,可以传输QQ,微信,支付宝,微博,百度等平台. 有多个应用程序管理,域名限制,帐户记录,登录记录.  彩虹聚合登录中转API登录传输API用于 ...

  2. QQ互联第三方登录多应用用户登录打通

    2019独角兽企业重金招聘Python工程师标准>>> 在开发第三方登录的时候,发现qq互联的第三方登录openId在多个应用中用户登录无法打通,然后发送邮件咨询了一下qq互联(邮箱 ...

  3. QQ互联第三方登录jar包

    TripartiteQQLogin 点击前往gitee 介绍 QQ互联实现的第三方QQ OAuth授权登录模块.简化开发,避免重复造轮子. 软件架构 MAVEN 安装教程 在项目中导入该jar包即可, ...

  4. qq快捷登陆 php代码,qq互联--qq快捷登陆

    1.介绍 QQ登录接口.作用是实现QQ直接登录某些网站,简化用户登录.注册流程. 现在有很多大型网站都在使用QQ互联登录功能: X东: X宁: X美: 2.签约 ①点击"应用管理" ...

  5. 微信|QQ扫码登录网页版二维码失效问题解决方案 网站无法访问PC网页版如何解决 安卓软件历史版本下载 FV fooview悬浮球帮助教程

    前言 1. 手机端浏览器登录网页的同时再用微信或者QQ扫码登录出现二维码失效问题如何解决? 2.部分网站无法访问PC网页版如何解决?请看方案 目录 前言 1.方案 2.方案 使用Edge安卓浏览器访问 ...

  6. Discuz!x3.4 QQ互联跳过完善资料直接登录(详细教程方法)

    Discuz!x3.4 QQ互联跳过完善资料直接登录(详细教程方法) 有很多人都为QQ互联的问题困扰,最近我正在研究QQ登录怎么才能避开完善信息直接登录的问题,结果经过几天的反复测验终于被我找到了方法 ...

  7. web端,qq互联以及微信登录接入流程(内嵌页面)总结

    前言 实习过程中,我参与了web版相册管家的开发,负责登陆页面的前后端逻辑. 需要在登陆页接入QQ互联和微信扫码登陆,而且是用页面内嵌方式.回头来看其实两者都有文档指导,步骤清楚,并不复杂.但是第一次 ...

  8. 网站没有备案接入QQ快速登录 QQ互联官网 成功率100%

    鳄鱼君申请QQ互联,为网站接入QQ快捷登录也是废了不少麻烦,为了让大家少走弯路,在这里整理下来给需要的站长朋友们. 网站没有备案接入QQ互联,需要填写申请表格,非常的简单,首先确保你的域名是国际域名, ...

  9. php网站 qq登陆,php写的插件网站接入QQ登录,QQ互联

    qq按钮这里的链接是入口,调用你的api api_qq.php前端直接链接到此/** * 这个QQ登录简单实用,只要大家看我写的注释会一目了然,请注意看哦. * 带有"@todo" ...

最新文章

  1. linux下yum错误:[Errno 14] problem making ssl connection Trying other mirror.
  2. linux c++ 编译 库,LINUX C/C++ 编译库关系
  3. c++读出像素矩阵_Python传numpy矩阵调c++(求3D图像连通区域)
  4. katalon进行app测试_Katalon API 测试 Demo
  5. mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...
  6. centos7 安装lsb_Docker安装与配置
  7. 一张图学会python-一张图学会python
  8. Python 取dataframe某一列为特定值
  9. 语法分析——自顶向下分析方法
  10. html5网页制作心得体会,学习网页制作心得体会范文3篇
  11. 网格边缘试探--服务网格的探索与实践
  12. 中国工商银行网上银行B2C在线支付接口说明
  13. 高尔顿与回归分析的起源
  14. 输入十个国名 要求按字母顺序输出C语言,用C语言编程实现国家名称按序输出,要求键盘输入五个国家的名字,按字母顺序排列打印输出。...
  15. hbase安装配置 整合到hadoop
  16. android开发之http协议
  17. iptables使用limit控制新建连接速率
  18. 诵读中国大赛网络评选投票微信图文投票怎么制作怎么制作投票页面
  19. One、that、it 做代词的区别
  20. 营收创历年同期新高,分众传媒期中考是“开挂”还是“暴雷”?

热门文章

  1. 软件保护系统Themida是否需要Internet才能工作?
  2. 嵌入式行业的发展前景?
  3. base.apk软件下载免费_PS软件各版本免费下载地址
  4. 人脸识别行业热点频频背后蕴藏巨大商机
  5. Java之十三 Java多线程
  6. centos8安装及配置nfs4
  7. 2019阿里技术电子书合集,打包下载
  8. Think Server RD350X 板载RAID设置
  9. 电脑重装系统教学,一键傻瓜式操作,80%的人都学会了
  10. C# 多输入设备识别 扫码枪键盘区分RAWINPUT原始输入简易开发笔记