目录
[toc]
微信公众号迁移
正常的公众号迁移直接通过微信操作就可以,如下图。但是因为udb数据里面存的是迁移前公众号的openid以及unionid,需要自行获取新旧openid以及unionid。
旧的用户信息要在迁移之前获取,第三步点击同意之后就公众号的接口就调不通了
相应网址:客服文档
前期准备(APPID,APPSECRET,access_token)
名词解释
开发者ID(AppID):开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。
AppID可以在 【微信公众平台-开发-基本配置】查看
开发者密码(AppSecret):开发者密码是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。
AppSecret现在不显示,需要把一开始申请的AppSecret保存下来,要不就只能重置
access_token:通过AppID以及AppSecret获取可以得到的调用接口的token,接口文档的接口基本都需要的一个参数,通过调接口获取
PS: 有次数限制,一天2000次,一次获取的token两小时内有效
接口说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?granttype=clientcredential&appid=APPID&secret=APPSECRET
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取accesstoken填写clientcredential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
返回说明
{"access_token":"ACCESS_TOKEN","expires_in":7200}
错误说明以及返回码看文档
获取新旧openid以及unionid
这里只说明公众号文档接口,文档地址如下: 微信公众号官方文档
因为文档里面没有一次性获取所有信息的接口,因此需要单独获取各个信息,大概流程如下图:
1.获取用户openid
对应微信接口地址如下: 获取用户列表
公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。
PS:1.open_id列表并不是一直都添加在列表的最后面,如果是新关注的用户基本不会在列表最后,因此拉粉丝的时候建议一次性拉取完
2.接口有调用次数限制,如下补充
接口相关说明
http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
next_openid | 否 | 第一个拉取的OPENID,不填默认从头开始拉取 |
next_openid官方文档写着必须,但是不添加也可以调通接口,效果如下:
2.获取用户详细信息(unionid)
对应微信接口地址如下: 获取用户详细信息
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
PS: 1.有调用次数限制
2.一次最多只能获取100个用户的详细信息
3.这个接口返回有点慢,100个用户基本需要两秒
接口相关说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
openid | 是 | 普通用户的标识,对当前公众号唯一 |
lang | 否 | 返回国家地区语言版本,zhCN 简体,zhTW 繁体,en 英语 |
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
{
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "广州",
"province": "广东",
"country": "中国",
"headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time": 1382694957,
"unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
"remark": "",
"groupid": 0,
"tagid_list":[128,2],
"subscribe_scene": "ADD_SCENE_QR_CODE",
"qr_scene": 98765,
"qr_scene_str": ""
}
参数 | 说明 |
---|---|
subscribe | 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。 |
openid | 用户的标识,对当前公众号唯一 |
nickname | 用户的昵称 |
sex | 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知 |
city | 用户所在城市 |
country | 用户所在国家 |
province | 用户所在省份 |
language | 用户的语言,简体中文为zh_CN |
headimgurl | 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。 |
subscribe_time | 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间 |
unionid | 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。 |
remark | 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注 |
groupid | 用户所在的分组ID(兼容旧的用户分组接口) |
tagid_list | 用户被打上的标签ID列表 |
subscribe_scene | 返回用户关注的渠道来源,ADDSCENESEARCH 公众号搜索,ADDSCENEACCOUNTMIGRATION 公众号迁移,ADDSCENEPROFILECARD 名片分享,ADDSCENEQRCODE 扫描二维码,ADDSCENEPROFILE LINK 图文页内名称点击,ADDSCENEPROFILEITEM 图文页右上角菜单,ADDSCENEPAID 支付后关注,ADDSCENE_OTHERS 其他 |
qr_scene | 二维码扫码场景(开发者自定义) |
qrscenestr | 二维码扫码场景描述(开发者自定义) |
错误说明以及返回码看文档
3. 通过旧openid获取新openid
对应微信接口地址如下: 转换openid
接口说明
openid的API接口如下,可在 帐号迁移审核完成后 开始调用,并最多保留15天。若帐号迁移没完成,调用时无返回结果或报错。帐号迁移15天后,该转换接口将会失效、无法拉取到数据。
http请求方式: POST
URL:http://api.weixin.qq.com/cgi-bin/changeopenid?access_token=xxxxx
请求数据:
{
"from_appid":"xxxxxxxx",//此处为原帐号的appid
"openid_list":[
"oEmYbwN-n24jxvk4Sox81qedINkQ",
"oEmYbwH9uVd4RKJk7ZZg6SzL6tTo"
]
//需要转换的openid,即第1步中拉取的原帐号用户列表,这些必须是旧账号目前关注的才行,否则会出错;一次最多100个,不能多。
}
这里的请求是 HTTP 坑!!
返回数据:
{
"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目前没有关注旧公众号
}
]
}
4. 获取新的unionid
同第二步,用新的openid去获取旧的openid
补充
公众号接口调用次数表
百度来的图如下,具体请根据公众号后台-开发-接口权限查看。
本文由博客一文多发平台 OpenWrite 发布!