国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 熱點 > 微信 > 正文

微信小程序與公眾號實現數據互通的方法

2024-07-22 01:17:55
字體:
來源:轉載
供稿:網友

公司因小程序項目先上線,公眾號后開發,接到上級的安排實現小程序打通任務,看文檔后發現:同一開發者賬號只要是在微信開放平臺綁定小程序與公眾號以后,會有一個唯一的unionid,這個unionid騰訊公司下產品共享。這個unionid就是我們進行打通的關鍵。

先說一下思路:

1.微信小程序與公眾號進行綁定后,在小程序調用wx.login()方法后會自動獲取unionid,公眾號根據官方文檔在獲取用戶基本信息后會拿到相同的unionid,openid,nickname。。。等相關信息;

2.將小程序拿到的unionid進行數據庫的更新操作,公眾號拿到的unionid等信息,新建數據庫表A進行存儲;(注:在這一步,因為我們公司的原因,我們的公眾號之前就有人關注了,那么在這之前,我通過公眾號獲取關注用戶列表獲取openid的列表,進行循環openid列表,在調用公眾號獲取用戶基本信息列表進行儲存數據庫表A,循環結束后之前關注的人的信息就儲存在數據庫A,然后在進行,這一步的操作)

3.通過公眾號關注/取關的事件相應,來進行數據庫表A的增刪操作,維護數據的新鮮度;

4.進行關聯查詢,到這一步我們會發現,通過unionid進行表的關聯后我們已經實現數據的互通了 

洋洋灑灑的說了一大堆,其實就是公眾號的兩個接口至關重要(1.關注/取關的事件相應接口     2.獲取用戶的基本信息接口)

有關于公眾號的安全域名配置,服務器域名配置以及獲取token就不在這里說了,百度一下一大堆。

代碼實現:

第一步,獲取公眾號用戶的openid列表操作,根據opneid進進行用戶的基本信息的查詢,存入數據庫操作(因為我們公司的公眾號關注人數只有1000+,所以我只調用了一次獲取關注列表的接口)

//主要代碼邏輯//獲取token AccessToken accessToken=wxUtils.getAccessToken(); String url="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+accessToken.getAccessToken()+"&next_openid=";//獲取所有用戶openidJSONObject jsonObject = httpRequest(url, "GET", null);  try { if(jsonObject.getString("errcode")!=null){ } }catch(Exception e) { } WeixinUserList userList = (WeixinUserList)JSONObject.toBean(jsonObject, WeixinUserList.class); if(null==userList) {  return "無用戶"; } userList.getTotal();//關注總人數 //用戶openId 列表 WxOpenidInfo wxOpenidInfo=userList.getData(); List<String> openIdList=null; if(null!=wxOpenidInfo) { openIdList=wxOpenidInfo.getOpenid();//公眾號返回的openid列表數據  if(null!=openIdList && openIdList.size()>0) { for(String opendid:openIdList) {      //獲取用戶的基本信息(unionid機制)  url="https://api.weixin.qq.com/cgi-bin/user/info?    access_token="+accessToken.getAccessToken()+"&openid="+opendid+"&lang=zh_CN";//通過openid獲取用戶信息  jsonObject = httpRequest(url, "GET", null);   WeixinUser wxUser=(WeixinUser)JSONObject.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<String> 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<String> getTagid_list() { return tagid_list; } public void setTagid_list(List<String> tagid_list) { this.tagid_list = tagid_list; }}  public class WxOpenidInfo { private List<String> openid;   public List<String> getOpenid() {    return openid;  }   public void setOpenid(List<String> openid) {    this.openid = openid;  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉山县| 商丘市| 林州市| 南澳县| 达拉特旗| 兴安县| 尉氏县| 五华县| 佛坪县| 英德市| 措美县| 海门市| 永福县| 姚安县| 万盛区| 油尖旺区| 临海市| 确山县| 湘乡市| 湛江市| 鹤山市| 县级市| 六安市| 五常市| 台东市| 昌黎县| 墨竹工卡县| 桂平市| 阿拉善左旗| 金门县| 枣强县| 武汉市| 奎屯市| 宁都县| 高州市| 重庆市| 鹰潭市| 北辰区| 和静县| 太白县| 马山县|