以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 微信access_token白名单造成获取不稳定 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110368) |
-- 作者:qwz405 -- 发布时间:2017/12/1 16:29:00 -- 微信access_token白名单造成获取不稳定 微信新功能: “获取access_token”接口新增IP白名单保护 我之前一直运行稳定的,昨天设置了,有获取access_token失败的记录。。。我怀疑可能是这个设置造成的。 还在观察,不知道有没有碰到相同困惑的朋友。
[此贴子已经被作者于2017/12/1 16:29:31编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/12/1 17:21:00 -- 把客户端外网ip加入公众号的IP白名单。如果不是固定ip,这就麻烦了 |
-- 作者:qwz405 -- 发布时间:2017/12/2 8:29:00 -- 今天一早又碰到了此故障,我的经历如下所示,麻烦老师帮忙判断可能的原因: 获取access_token用处:获取用户地理位置,给用户发送信息等。 起因:微信更新access_token白名单保护功能(见1楼),我就设置了功能(11月/30日)。 故障: 12月1日,早上无法获取坐标,信息发送失败。 12月2日(今天),早上无法获取坐标,信息发送失败。 处理: 将服务器关闭,重新启动,问题解决,而且一整天都没有再发生(这两天晚上10点多还有正常获取坐标记录)。 但早上起来,就无法获取坐标,怀疑是0:00时候,要重新获取access_token?或者微信有做了什么设置? (以前都是整月全天运行,没有发生过这样有规律的故障) 故障截图: 以下2段代码一直在用,没有改动过: 1.获取access_token代码: ............ Dim tp As TimeSpan = Date.Now - CreateTime Dim url As String = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}" If tp.TotalSeconds > 3600 Then Dim hc As New HttpClient(CExp(url,AppId,AppSecret)) Dim ret As String = hc.GetData() If ret = "" Then \'如果失败,再尝试一次 hc.GetData() End If CreateTime = Date.Now() Dim jo As JObject = JObject.Parse(ret) If jo("errcode") Is Nothing Then AccessTocken = jo("access_token") \'Else \'不屏蔽,获取失败会有弹窗,服务器停止响应。所以也就不知道获取失败的错误代码是什么? \'MessageBox.show("获取access_token失败[access_token获取],原因:" & vbcrlf & jo("errmsg").ToString) End If End If ....... 2.获取坐标代码: wx.ready(function () { //document.getElementById(\'scan1\').onclick = function () { //屏蔽此代码,点击页面时(登录页面时),自动获取坐标,不需要用"scan"传递值 wx.getLocation({ type: \'wgs84\', // 默认为\'wgs84\'的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入\'gcj02\' success: function (res) { document.getElementById(\'纬度\').value = res.latitude; // 纬度,浮点数,范围为90 ~ -90
document.getElementById(\'经度\').value = res.longitude; // 经度,浮点数,范围为180 ~ -180。 } }); //}; //屏蔽此代码,点击页面时(登录页面时),自动获取坐标,不需要用"scan"传递值 }); wx.error(function (res) { //alert(res.errMsg); }); [此贴子已经被作者于2017/12/2 8:32:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/12/2 9:02:00 -- 错误提示的意思是access_token已经过期,要重新获取。 如果是服务号和订阅号,并且会有多台电脑(服务器,开发测试电脑,其它客户端)获取access_token |
-- 作者:qwz405 -- 发布时间:2017/12/2 9:08:00 -- 不屏蔽失败弹窗,不断尝试,问题找到了。。。给需要的朋友。。。 错误弹窗:invalid ip ***.***(某个IP) not in whitelist hint; 原因:两条接入光纤。 光纤A,开80端口,接微信公众号服务器; ---设置了白名单 光纤B,开80端口,给微信测试号,我调试代码用; ---未设置白名单。 我认为光纤A进80端口才能到微信服务器,光纤B没必要设置白名单。 哎~~不懂了,微信公众号不是只有80端口能用,从光纤B进的话,应该是到不了微信公众号的? |
-- 作者:有点蓝 -- 发布时间:2017/12/2 9:13:00 -- 获取access_token和什么端口没有任何关系,这是主动接口,不需要任何端口。 80端口仅仅是指微信的回调服务需要。主动接口调用不需要端口,以调用接口的ip为准 [此贴子已经被作者于2017/12/2 9:13:00编辑过]
|
-- 作者:qwz405 -- 发布时间:2018/1/11 12:10:00 -- 老师,您好。 我已将2条外网光纤都设为白名单了。 从上周六开始不能获取坐标,今天我获取到的错误如图:从早上到现在,出现2次错误,都是同一IP。 手机登录到服务器,还要通过别的IP中转来获取access_token?那白名单就没法设置了。
[此贴子已经被作者于2018/1/11 12:10:10编辑过]
|
-- 作者:有点蓝 -- 发布时间:2018/1/11 12:17:00 -- 这种情况只能做一个中控服务 |
-- 作者:有点甜 -- 发布时间:2018/1/11 12:18:00 -- 你的光纤的ip地址变了吧?你试试看看你网络的外网ip是什么
|