最近申请好了QQ互联的快捷登陆,理论上填好相应的信息后,每次使用QQ快捷登陆应该没问题的,结果一直登陆失败,搬主题折腾了很久,一直提示invalid openid,不知道具体的问题在哪里,最终解决。这里搬主题就记录一下QQ互联快捷登陆失败提示invalid openid的解决办法。
搬主题本次的问题确切的说是因为CDN引起的,因为如果绕过CDN,直接使用QQ快捷登陆,功能是正常的。然后使用CDN后,就登陆失败,提示如下:
client request’s parameters are invalid, invalid openid
这里搬主题就记录一下这个问题的解决过程。
首先从源站身上找原因,首先查看源站的防火墙及各种防护措施,没有任何发现。并且直接不使用CDN的话,是可以正常使用QQ快捷登陆的,那基本就排除了源站的问题。
接下来就是要查找CDN的设置问题。因为搬主题使用的是腾讯云的EdgeOne的CDN,设置了大量的安全规则,所以需要从这里入手。
这里不得不说一下腾讯云的EdgeOne,确实不错,性价比较高,可以设置蛮多安全规则,加上与CDN融合,兼顾安全及速度。最近的又有1元体验的活动,EdgeOne活动地址>>>
再说回来,EdgeOne的规则设置了不少,首先确定要确保以下几个设置选项:
- 查询字符串:全部保留
- 节点缓存 TTL:遵循源站 Cache-Control 无 Cache-Control 头时:默认缓存策略
然后在EdgeOne的特色功能中,找到安全防护-WEB防护菜单,点击自己的域名后,找到防护例外规则,新增例外的规则:
- 匹配字段:请求来源(Referer)
- 逻辑符号:包含(关键字)
- 匹配内容:https://graph.qq.com/
然后在下面选择处置方式把自己的一些规则跳过,注意不要完全放开,当然测试的时候全部放开,后面再慢慢加上即可。
理论上搬主题做了这些设置,QQ快捷登陆应该正常啊,但是还是失败,搬主题又以为是各种设置问题,然后找了几天都失败了,后来没办法,只能寻求腾讯云客服帮助。还别说,腾讯云客服挺给力的,本以为这些不属于他们的工作,结果还是耐心帮我排查及解答。
排查问题的过程大概如下:从referer域名到ASN屏蔽的检查,从请求状态码异常的查看到IP白名单,其实就是把设置里面有可能出问题的选项都排查一遍。大概花了大半天的时间,一直找不到问题的所在,只知道不套CDN是可以正常使用QQ快捷登陆的,套了CDN后就出问题了。
排查了很久,最后判断可能得问题是
1、登录后https://www.banzhuti.com/oauth/qq/callback?code=A123456 类似这个url这里会产生两个value值,正常情况下是没有的。
2、正常登录会产生一个302跳转,会多一条https://www.banzhuti.com/ 这个location的记录,但是经过EdgeOne的IP时是直接响应一个200的状态码,日志是有相关的302记录,但是排查页面时是没有的,然后导致数据不传递过去。
然后就继续排查。就当搬主题以为这种问题基本很难解决的时候,腾讯云客服让我先关闭QUIC。
然后搬主题就把一堆网站加速都关掉,哪怕临时把所有安全规则全部禁用,问题依旧存在。
到这里的时候,搬主题本以为腾讯云EdgeOne与QQ快捷登陆只能二选一的时候,结果过了半个多小时,腾讯云客服竟然让我再次测试,说没有见到报错,应该正常了。
于是搬主题再次测试的时候,解决了!!!在使用CDN的情况下,QQ快捷登陆功能正常。
问了腾讯云客服,说他们也啥也没做,就在我关闭了QUIC功能后,后续我继续打开QUIC功能,系统再也没有报错,功能也正常了,真是匪夷所思。
理论上是开启了QUIC功能导致了一些网站跳转逻辑的问题,因为网页QQ扫码登录成功后会将用户授权信息通过回调地址以HTTP请求的形式返回给事先设定的回调地址,CDN开启了QUIC功能后估计会内部报错。禁用再打开,相当于重置了QUIC,功能就正常了。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容