NetworkadmIn 2021-12-03 11:02 采纳率: 66.7%
浏览 485
已结题

微信公众号账号迁移 如何完成新旧服务号openID转换?

一、因服务号已进行过二次开发,包括模板消息、带参二维码等,同时用户openid也关联了许多其他基础用户信息,为了不影响用户在新服务号上的正常使用有以下几个问题需要解决:

  1. 获取到的openid用什么方式进行转换?(需提供解决思路)
  2. 或能够借助什么工具?(需提供工具名称及简要使用方式)
  3. 如何稳健快速地完成用户openid的转换?(需详细步骤)
  4. 开发配置等转移过程中有什么需要注意的?(确保完成转移后用户使用正常相关注意事项)

二、目前已通过【微信公众平台接口调试工具】完成了旧公众号openid的获取(有几万用户openid),工具地址:https://mp.weixin.qq.com/debug?token=135437352&lang=zh_CN

三、openid转换接口(摘自官方)
账号迁移后,粉丝的openid会变化,微信用户关注不同的公众号,对应的openid是不一样的,迁移成功后,粉丝的openid以目标帐号(即新公众号)对应的OpenID为准。但开发者可以通过开发接口转换openid,开发文档可以参考:
提供一个openid转换的API接口,当帐号迁移后,可以通过该接口:

  1. 将原帐号粉丝的openid转换为新帐号的openid。
  2. 将有授权关系用户的openid转换为新帐号的openid。
  3. 将卡券关联用户的openid转换为新帐号的openid。
    ◆ 原帐号:准备要迁移的帐号,当审核完成且管理员确认后即被回收。
    ◆ 新帐号:用来接纳粉丝的帐号。新帐号在整个流程中均能正常使用。
    一定要按照下面的步骤来操作。
  4. 一定要在原帐号被冻结之前,最好是准备提交审核前,获取原帐号的用户列表。如果没有原帐号的用户列表,用不了转换工具。如果原账号被回收,这时候也没办法调用接口获取用户列表。
    如何获取用户列表见这里:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140840
  5. 转换openid的API接口如下,可在帐号迁移审核完成后开始调用,并最多保留15天。若帐号迁移没完成,调用时无返回结果或报错。帐号迁移15天后,该转换接口将会失效、无法拉取到数据。
    ◆ URL:https://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx
    此处token为新帐号的token
    ◆ 请求方式:post
    ◆ 请求数据:
    {
    "from_appid":"xxxxxxxx",//此处为原帐号的appid
    "openid_list":["oEmYbwN-n24jxvk4Sox81qedINkQ","oEmYbwH9uVd4RKJk7ZZg6S
    zL6tTo"]//需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。
    }
◆ 输出数据:
{
"errcode": 0,
"errmsg": "ok",
"result_list": [
{
"ori_openid": "oEmYbwN-n24jxvk4Sox81qedINkQ",
"new_openid": "o2FwqwI9xCsVadFah_HtpPfaR-X4",
"err_msg": "ok"
},
{
"ori_openid": "oEmYbwH9uVd4RKJk7ZZg6SzL6tTo",
"err_msg": "ori_openid error"//这个openid目前没有关注旧公众号
}
]
}

◆ 错误码:
63178:from_appid参数错误,和调用的账号并没有迁移关系
Ori_openid error:openid目前没有关注旧公众号。或者是将from_appid搞错了,用成了新帐号的appid。

  • 写回答

1条回答 默认 最新

  • CSDN专家-showbo 2021-12-03 13:11
    关注

    题主如果有绑定过开发平台,那么可以通过unionid来关联,没有的话通过新账号的配置信息获取access token后调用转换接口进行转换就行了
    access token获取参考此文
    https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
    不知道一次能传递多少个,建议是多次调用接口。

    数据库表新增new_openid字段,用于调用接口获取数据后,将返回的new_openid通过旧的openid进行更新

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 修改了问题 12月3日
  • 修改了问题 12月3日
  • 展开全部

悬赏问题

  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行