QQ互联快捷登陆失败提示invalid openid的解决办法

最近申请好了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的规则设置了不少,首先确定要确保以下几个设置选项:

  1. 查询字符串:全部保留
  2. 节点缓存 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,功能就正常了。

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容