目录
[toc]
微信公众号迁移
正常的公众号迁移直接通过微信操作就可以,如下图。但是因为udb数据里面存的是迁移前公众号的openid以及unionid,需要自行获取新旧openid以及unionid。
旧的用户信息要在迁移之前获取,第三步点击同意之后就公众号的接口就调不通了
相应网址:客服文档
前期准备(APPID,APPSECRET,access_token)
名词解释
开发者ID(AppID):开发者ID是公众号开发识别码,配合开发者密码可调用公众号的接口能力。
AppID可以在 【微信公众平台-开发-基本配置】查看
开发者密码(AppSecret):开发者密码是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。
AppSecret现在不显示,需要把一开始申请的AppSecret保存下来,要不就只能重置
access_token:通过AppID以及AppSecret获取可以得到的调用接口的token,接口文档的接口基本都需要的一个参数,通过调接口获取
获取Access_token接口文档地址
PS: 有次数限制,一天2000次,一次获取的token两小时内有效
接口说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=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
next_openid官方文档写着必须,但是不添加也可以调通接口,效果如下:
2.获取用户详细信息(unionid)
对应微信接口地址如下: 获取用户详细信息
在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。
请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(http://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
返回说明
正常情况下,微信会返回下述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": ""
}
错误说明以及返回码看文档
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 发布!