重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5569|回复: 0
打印 上一主题 下一主题

解决微信网页授权,出现"errcode":40163,"

[复制链接]

299

主题

684

帖子

6998

积分

学生管理组

Rank: 8Rank: 8

积分
6998
跳转到指定楼层
楼主
发表于 2018-5-26 13:19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说说自己理解的微信机制:

微信内访问自己服务器的页面,如果访问出错,微信就会认为是微信自身的问题,那么他就会开启另外一个IP来访问这个页面(什么上海的IP,深圳的IP不等),再把访问结果发回用户端,但是如果另外来的那个IP访问也出错,就会返回到一个微信自己定义的404页面(什么找人信息之类的)


如果我们本身服务器页面也出错了,那么随便怎么访问都是出错的。。。那么问题来了,如果这个服务器出错的访问是用在微信网页授权上面呢?

首先看下流程:

微信内调用网页授权,首先是服务器发起访问一个微信网页授权的地址,带上回调地址。这个发起访问一般都没问题,按照那个文档来就可以,然后微信会主动访问你那个自己服务器的回调地址,并且带上一个参数code,然后自己的服务器接收到这个参数后,就把这个参数组装加密什么的,再去访问相关地址获取access_token,最终获取到用户信息,获取用户信息后,服务器还必须 反一个页面给用户,

那么在接到code到最终反一个页面给用户的过程中,如果本身程序就有错误,特别是在使用了这个code过后的出错,服务器反会错误了,那么这个时候,微信会根据最上面的原理,再次开启另外一个IP来访问,并且同样带和上次一样的code参数。这样你服务器又会去根据这个code参数去完成同样一次申请,这个时候,你表面上看起,就是报40163错误。说code被用了,但实际上是因为微信被迫开启另外一个ip来访问你的。。


那么我测试,只要是正常流程,微信只会访问一次你的回调接口。。。


这篇文章的问题 是出在我用API发红包的时候,在微信的回调里面,获取用户OPENID后,就去执行发红包的post了,结果这个里面出错(本地调试正常,部署到服务器里面就出错了。。。哎。。。。),然后日志里面就显示"errcode":40163,"errmsg":"codebeenused。。实际上本身就是我自己程序的问题。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-12-22 00:20 , Processed in 0.174387 second(s), 28 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表