微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid

2024-03-13 14:12

本文主要是介绍微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

有一些同学在实际开发中,会有通过微信的openid获取公众号的openid,或者其他内容,这几天正好在研究这个功能的实现(已实现),现做思路上的简单分享,希望能对需要解决该问题的同学有所帮助,有误之处敬请指正。

开发工具

工具/语言/依赖版本备注
uniapp2023-12
Springboot2.1.12.RELEASE
weixin-java-miniapp4.1.0Springboot依赖包,兼容性请自行解决

问题

1.通过微信openid获取公众号的openid

2.通过unionid获取公众号的openid

3.其他通过openid、unionid相互获取

微信官方说明

极其重要:同一主体下的小程序与公众号未关联,无法在使用uni.login时通过code获取到unionid.

前置工作

解决该问题的大前提:在微信·开放平台对应路径绑定小程序、绑定公众号

具体操作:(略)

开发逻辑

整体思路:通过unionid关联微信小程序openid与公众号openid

1.微信小程序发起微信登录请求,需发送有效的code至后端待后续换取session信息;

2.微信小程序业务实现接口:存储获取到的微信小程序openid、unionid,备用;

3.微信公众号业务实现接口:获取accessToken、获取用户列表(主要是获取openid)、批量获取用户列表(关注与未关注的用户完整信息);

4.使用批量获取的用户列表结果中通过第二步中拿到的uinonid获取公众号的openid即可。

开发准备

Springboot 项目添加依赖

<!-- https://mvnrepository.com/artifact/com.github.binarywang/weixin-java-miniapp -->
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>4.1.0</version>
</dependency>​

开发实操

1.java后端使用code置换seesion信息

// 1.获取微信会话信息
WxMaJscode2SessionResult sessionResult = wxService.getUserService().getSessionInfo(code);

2.存储微信小程序openid、session_key、unionid

3.微信公众号获取信息

3.1 获取access_token
https请求方式: GET 
url: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRETAPPID: 公众号appid
APPSECRET: 公众号的appsecret
3.2 获取公众号用户列表
获取关注微信公众号用户列表/*** http请求方式:get* url: https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN* http请求返回的数据* {*     "total": 7,*     "count": 7,*     "data": {*         "openid": [*             "onitD6eh2CmVAjJyvXvjgaTmWVQo",*             "onitD6Rtzk8LYeTHIk07OseyIWI8",*             "onitD6SUQfEerhm7qhQvB5zRK6t4",*             "onitD6eSfArnbPs3RxoQu64ALFgU",*             "onitD6XQDKdWaYw2GUwEo1GYamkg",*             "onitD6fg0vwdpAnJR2rb3dkxPkqw",*             "onitD6StpbW2Nn7Srzl9J4WjShJ8"*         ]*     },*     "next_openid": "onitD6StpbW2Nn7Srzl9J4WjShJ8"* }*/
3.3 批量请求用户信息
批量获取用户信息的请求参数:/*** 批量请求用户信息的数据格式* http方式: POST* url: https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN* {*     "user_list": [*         {*             "openid": "xxxx",*             "lang": "zh_CN"*         },*         {*             "openid": "xxxx",*             "lang": "zh_CN"*         }*     ]* }*/
批量获取用户信息的返回结果:/*** 批量请求用户信息返回结果数据格式* url: https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN* http方式: POST* 返回结果:* {*    "user_info_list": [*        {*            "subscribe": 1,*            "openid": "xxxx",*            "language": "zh_CN",**           "subscribe_time": 1434093047,*            "unionid": "xxxx",*            "remark": "",**            "groupid": 0,*            "tagid_list":[128,2],*            "subscribe_scene": "ADD_SCENE_QR_CODE",*            "qr_scene": 98765,*            "qr_scene_str": ""**       },*        {*            "subscribe": 0,*            "openid": "xxxx"*        }*    ]* }*/第一个为已关注的用户
第二个为未关注的用户

4.使用第四步中的返回结果unionid与第二步中微信小程序获取到的unionid关联

综上就完成了微信小程序与微信公众号信息的关联。

至于其他信息的关联和处理请大家自行想办法,至此结束。

Java与uniapp代码目前还未开放,待后续提供至个人github仓库。

有问题可以联系我:code_captain@163.com

这篇关于微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/805137

相关文章

捷瑞数字业绩波动性明显:关联交易不低,募资必要性遭质疑

《港湾商业观察》施子夫 5月22日,山东捷瑞数字科技股份有限公司(以下简称,捷瑞数字)及保荐机构国新证券披露第三轮问询的回复,继续推进北交所上市进程。 从2023年6月递表开始,监管层已下发三轮审核问询函,关注到捷瑞数字存在同业竞争、关联交易、募资合理性、期后业绩波动等焦点问题。公司的上市之路多少被阴影笼罩。​ 业绩波动遭问询 捷瑞数字成立于2000年,公司是一家以数字孪生驱动的工

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写   很多想成为一名护理方面的从业者,但是又不知道应该怎么制作一份简历,现在这里分享了一份护理方面的简历模板供大家参考。   蓝山山   年龄:24   号码:12345678910   地址:上海市 邮箱:jianli@jianli.com   教育背景   时间:2011-09到2015-06   学校:蓝山大学   专业:护理学   学历:本科

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM

一道经典Python程序样例带你飞速掌握Python的字典和列表

Python中的列表(list)和字典(dict)是两种常用的数据结构,它们在数据组织和存储方面有很大的不同。 列表(List) 列表是Python中的一种有序集合,可以随时添加和删除其中的元素。列表中的元素可以是任何数据类型,包括数字、字符串、其他列表等。列表使用方括号[]表示,元素之间用逗号,分隔。 定义和使用 # 定义一个列表 fruits = ['apple', 'banana

微信小程序开发必知必会:文件结构和基本配置

一、微信小程序基本文件结构 1.  project.config.json:项目的基本配置文件,包括项目名称、appid、项目目录、页面文件夹等。     {"setting": {"urlCheck": false,"es6": true,"postcss": true,"nodeModulesPath": "D:\\\\node_modules"},"appid": "wxd678e

【青龙面板辅助】JD商品自动给好评获取京豆脚本

1.打开链接 开下面的链接进入待评价商品页面 https://club.jd.com/myJdcomments/myJdcomments.action?sort=0 2.登陆后执行脚本 登陆后,按F12键,选择console,复制粘贴以下代码,先运行脚本1,再运行脚本2 脚本1代码 可以自行修改评价内容。 var content = '材质很好,质量也不错,到货也很快物流满分,包装快递满

美容美发店营销版微信小程序源码

打造线上生意新篇章 一、引言:微信小程序,开启美容美发行业新纪元 在数字化时代,微信小程序以其便捷、高效的特点,成为了美容美发行业营销的新宠。本文将带您深入了解美容美发营销微信小程序,探讨其独特优势及如何助力商家实现业务增长。 二、微信小程序:美容美发行业的得力助手 拓宽客源渠道:微信小程序基于微信社交平台,轻松实现线上线下融合,帮助商家快速吸引潜在客户,拓宽客源渠道。 提升用户体验: