微信授权,重定向两次
做微信支付的时候,需要微信授权拿openId
大概流程就是,把用户重定向到微信一个地址,然后微信带着code重定向回来,然后拿code换用户的openId
这期间发生了一件比较有意思的事情,android版的微信授权失败导致没法支付,看了一下服务器上报错如下
System.Collections.Generic.KeyNotFoundException: 给定关键字不在字典中。
在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
在 WxPayAPI.JsApiPay.GetOpenidAndAccessTokenFromCode(String code)
{"errcode":40163,"errmsg":"code been used, hints: [ req_id: tivCza01272165 ]"}
我支付代码是和官方demo一样的,基本没改。
然后看到这个错误,我第一反映是打一下日志,我把授权页面打上了日志,记录了一下访问时间和访问的url完整地址,也就是包含参数部分的。
然后再把用code换openId的result也用日志记录了。
然后发现
我请求拿code后,微信同一个code给我重定向回来了两次,第一次我换取到了openId,第二次没换到openI的,错误内容是 code has been used,也就是code被使用过了。
所以问题肯定是出在两次重定向。但是为什么会同一个code重定向两次?我搜了一下,很多开发同学都碰到过,有的人请求授权的时候加了一个参数 &connect_redirect=1 ,我看了一下很多人的反馈,有些人是可以解决问题的,有些人依然没解决,比如我。。。。。
然后搜来搜去,还有人在园子里说是360搞的鬼,见帖子: http://www.cnblogs.com/Can-daydayup/p/10128324.html
然后我服务器也安装了 360 ,然后我一退出就不会了。所以我想问问@MJ0011,为什么我们服务器发起请求,你360要做一次?
360能给个说法么?这是要解决什么问题所以要重发一个请求?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2013-12-18 .tostring()格式化大全