温馨提示:文章均来自网络用户自主投稿,风险性未知,涉及注册投资需谨慎,因此造成损失本站概不负责! |
公司先推出小程序项目,后开发公众号。 公司接到上级安排后,实现了小程序的开通任务。 阅读文档后发现,只要同一个开发者仗号绑定小程序和威芯开放平台公众号,就会有一个维一的unionid。 这个unionid是腾讯产品共享的。 这个unionid是我们连接的关键。
先说一下思路:
1、威芯小程序绑定公众号后,小程序调用wx.login()方法后会自动获取unionid,公众号根据管方文档获取用户基本信息后也会得到相同的unionid、openid、昵称。 。 。 及其他相关信息;
2、用小程序获取的unionid更新数据库,新建数据库表A,用于存储公众号获取的unionid等信息; (注:这一步,因为我们公司的原因,我们的公众号之前已经有人关注过,所以之前我是通过公众号获取关注用户列表获取openid列表,循环openid列表,调用公众号获取用户基本信息列表后,存储数据库表A。
3、通过响应关注/取消关注公众号的事件来添加和删除数据库表A,以保持数据的新鲜度;
4. 进行关联查询。 此时我们会发现通过unionid关联表后就实现了数据互通
口才说了很多,但其实公众号的两个接口非常重要(1.关注/取消关注事件对应的接口2.获取用户基本信息的接口)
关于公众号的安全域名配置、服务器域名配置和token获取,这里就不讲了。 百度一下就有很多。
代码:
苐一步获取公众号用户的openid列表操作,根据opneid查询用户的基本信息,并存入数据库(因为我们公司公众号只有1000+关注者,所以我只调用一次获取关注列表的接口)
//主要代码逻辑
//获取token
AccessToken accessToken=wxUtils.getAccessToken();
String url="https://api.weixin.企鹅.com/cgi-bin/user/get?access_token="+accessToken.getAccessToken()+"&next_openid=";//获取所有用户openid
ONObject jsonObject = httpRequest(url, "GET", null);
try {
if(jsonObject.getString("errcode")!=null){
}
}catch(Exception e) {
}
WeixinUserList userList = (WeixinUserList)ONObject.toBean(jsonObject, WeixinUserList.class);
if(null==userList) {
return "无用户";
}
userList.getTotal();//关注总人数
//用户openId 列表
WxOpenidInfo wxOpenidInfo=userList.getData();
List openIdList=null;
if(null!=wxOpenidInfo) {
openIdList=wxOpenidInfo.getOpenid();//公众号返回的openid列表数据
if(null!=openIdList && openIdList.size()>0) {
for(String opendid:openIdList) {
//获取用户的基本信息(unionid机制)
url="https://api.weixin.企鹅.com/cgi-bin/user/info? access_token="+accessToken.getAccessToken()+"&openid="+opendid+"&lang=zh_CN";//通过openid获取用户信息
jsonObject = httpRequest(url, "GET", null);
WeixinUser wxUser=(WeixinUser)ONObject.toBean(jsonObject, WeixinUser.class);
//进行数据库表A的储存操作
int row = gzhService.addGZHUser(wxUser);
}
}
}
/**
* 用户列表
* @author 一叶知秋plus
*
*/
public class WeixinUserList{
private Integer total;//关注该公众仗号的总用户数
private Integer count;//拉取的OPENID个数,**值为10000
private WxOpenidInfo data;//列表数据,OPENID的列表
private String next_openid;//拉取列表的**一个用户的OPENID
private int errcode;//错误编码
private String errmsg="ok";//错误提示
public Integer getTotal() {
return total;
}
public void setTotal(Integer total) {
this.total = total;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public String getNext_openid() {
return next_openid;
}
public void setNext_openid(String next_openid) {
this.next_openid = next_openid;
}
public WxOpenidInfo getData() {
return data;
}
public void setData(WxOpenidInfo data) {
this.data = data;
}
public int getErrcode() {
return errcode;
}
public void setErrcode(int errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
}
/**
* 用户基本信息
* @author 一叶知秋plus
*
*/
public class WeixinUser {
private String subscribe;// 用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
private String openid;// 用户的标识,对当前公众号维一
private String nickname;// 用户的昵称
private String sex;// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
private String city;// 用户所在城市
private String country;// 用户所在囯家
private String province;// 用户所在省份
private String language;// 用户的语言,简体中文为zh_CN
private List tagid_list;//用户被打上的标签ID列表
private String unionid; //用户的unionid
private String headimgurl;//用户的头像
public String getHeadimgurl() {
return headimgurl;
}
public void setHeadimgurl(String headimgurl) {
this.headimgurl = headimgurl;
}
public String getUnionid() {
return unionid;
}
public void setUnionid(String unionid) {
this.unionid = unionid;
}
public String getSubscribe() {
return subscribe;
}
public void setSubscribe(String subscribe) {
this.subscribe = subscribe;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public List getTagid_list() {
return tagid_list;
}
public void setTagid_list(List tagid_list) {
this.tagid_list = tagid_list;
}
}
public class WxOpenidInfo {
private List openid;
public List getOpenid() {
return openid;
}
public void setOpenid(List openid) {
this.openid = openid;
}
}
2023-07-24 22:21:24
,某些文章具有时效性,若有错误或已失效,请在下方联系网站客服。1 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请联系客服QQ1041045050进行删除处理。
2 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3 风险提示:合作之前建议签订合同,汇一线首码网作为信息共享平台无法对信息的真实性及准确性做出判断,不承担任何财产损失和法律责任,若您不同意该提示,请关闭网页且不要在本站拓展任何合作,否则造成的任何损失由您个人承担。