记一次线上微信公众号迁移遇到的坑

问题描述:

客户迁移公众号无告知,导致公众号的用户,存在两个openId,一个旧公众号的openId,一个新公众号的openId。需要做openId转换处理


解决方案:

按照微信官方提供的文档 https://kf.qq.com/faq/1901177NrqMr190117nqYJze.html
需要获取旧的公众号关注的用户,批量调用获取到旧的openId,然后调用openId转换接口。这里要注意,关注用户列表最多只能获取1w条,而openId转换接口,一次只能转换100条。
所以需要注意拆分数据。

遇到的坑

  1. 旧公众号被注销,意味着该公众号所有接口无法调用,就算是简单的调用获取access_token,也返回 {“errcode”:50002,“errmsg”:“user limited rid: 605b1f97-576045c5-7ff0585d”},因为返回50002,表示没有权限

  2. 直接调用新公众号的openId接口进行测试,因为没有配置电脑IP到微信白名单,提示{ errcode: 40164, errmsg: ‘invalid ip 117.100.47.169 ipv6 ::ffff:117.100.47.169, not in whitelist hint: [39lrcA01394100]’ }

  3. 调用openId转换接口,请求参数格式错误,返回{“errcode”:47001,“errmsg”:“data format error rid: 605c4c13-0a9e5a8c-35950107”},格式错误

  4. 调用openId转换接口,返回{“errcode”:63178,“errmsg”:“appid wrong rid: 605c4ce1-1279f77e-3a826739”},这里需要注意,1、是不是请求参数错误;2、是不是公众号双方管理员都有确认迁移;3、openId转换接口是否是https

    {
    “from_appid”:“xxxxxxxx”,//此处为原帐号的appid
    “openid_list”:[“oEmYbwN-n24jxvk4Sox81qedINkQ”,“oEmYbwH9uVd4RKJk7ZZg6S
    zL6tTo”]//需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。
    }

    遇到问题:openid_list转换为json多了\转义符,结果返回的错误依旧是63178,并且也是appid wrong rid,存在误导情况,导致我一直去查63178是什么原因,丝毫没有觉得是自己请求参数多了转义符导致。这里必须记住要跟官网的请求参数一样,不能多转移也不能少字符串

  5. 调用openId转换接口,状态码返回301或者 Moved Permanently,查看请求是不是https

    官网错误URL:http://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx

    正确URL:https://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx

  6. 调用openId转换接口,提示access_token失效,返回{“errcode”:40001,“errmsg”:“invalid credential, access_token is invalid or not latest rid: 605c2ed0-2e206c4a-6885f518”}

总结

  1. 一开始遇到的问题,access_token从微信获取,失效时间为7200(两小时),但是实际上去调用的时候,总是莫名其妙就提示access_token失效,所以只能重新去获取。

  2. 后面又遇到,本地调试的时候,偶尔可以获取的到token,偶尔提示当前ip没有权限,只能让运维加入到微信的白名单里面

  3. 又因为WxClient是自己封装的,token会存在redis上,但是用redis上的token偶尔会提示token失效,处理:自己重新定义一个Get方法去调用

  4. access_token获取成功之后,调用的时候,因为接口http调用失败,后面查看好久,才知道需要更改为https,然后调用的时候,又报请求参数错误。再看参数,发现是少了字符串,多了转义符这些细节问题

  5. 结果调用的时候,还是报63178,返回的信息也是说appid wrong 这个,实际上是openid_list出错,多了转义符导致的,必须要跟官网的请求参数一样才可以

  6. 最终解决,经历过封装的wxClient返回的token有问题,接口路径错误,白名单没有加上,请求参数错误。这一系列细节上的问题。最终通过。

一句话总结:对接还是粗心,而且微信官网文档有些不靠谱,具体的还是要多质疑,不然很容易卡在一些莫名其妙的问题上。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值