微信公众平台、公众号、小程序联动

news2024/11/13 19:10:51

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

微信公众平台、公众号、小程序联动

    • 如何通过unionid获取到微信公众openid
    • 如何根据code获取微信公众openid以及unionid
    • 小程序获取unionid

不管是小程序、公众平台还是微信公众号,最后与平台绑定的唯一关系就是unionid

首先和大家探讨一下相关的知识

1、公众平台可以绑定公众号、小程序、以及网站pc端

2、他们之间通过unionid进行关联

3、不可以直接通过unionid获取到公众号的openid

如何通过unionid获取到微信公众openid

要想通过unionid获取到微信公众号openid。具体有如下几步

1、首先获取到acces_token

2、获取到用户列表

3、获取到用户详细信息(这里面就会存在unionid)获取到用户详细信息

具体代码给大家贴出来,如下所示

public String getWxPublicAccountOpenId(String unionid) {
  String result = null;
  // 获取token
  String accessToken = WechatUtil.getWechatAccessToken();
  int maxQueryNum = 99;
  if (StrUtil.isNotBlank(accessToken)) {
    // 获取微信公众号用户列表openid
    Map<String, Object> getOpenidMap = new HashMap<>(2);
    log.info("accessToken:{}", accessToken);
    getOpenidMap.put("access_token", accessToken);
    getOpenidMap.put("next_openid", "");
    HttpResponse userOpenidListResponse = HttpRequest.get("https://api.weixin.qq.com/cgi-bin/user/get").form(getOpenidMap).execute();
    log.info("userOpenidListResponse:{}", JSON.toJSONString(userOpenidListResponse.body()));
    // 获取详细用户信息
    if (userOpenidListResponse.isOk()) {
      JSONObject data = JSON.parseObject(userOpenidListResponse.body()).getJSONObject("data");
      JSONArray openidList = data.getJSONArray("openid");
      log.info("openidData:{}", data);
      if (openidList != null && !openidList.isEmpty()) {
        JSONArray userInfoList = new JSONArray();
        int size = openidList.size();

        // 分块处理openIdList,这里接口只能处理100条
        for (int i = 0; i < size; i += maxQueryNum) {
          int end = Math.min(i + maxQueryNum, size);
          JSONArray subList = new JSONArray(openidList.subList(i, end));
          JSONObject userInfoJson = WechatUtil.jsonArrayTo(subList);
          log.info("userInfoJson:{}", JSON.toJSONString(userInfoJson));
          HttpResponse userInfoResponse = HttpRequest.post("https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=" + accessToken)
            .body(JSON.toJSONString(userInfoJson)).execute();
          log.info("userInfoResponse:{}", JSON.toJSONString(userInfoResponse.body()));
          if (userInfoResponse.isOk()) {
            userInfoList.addAll(JSON.parseObject(userInfoResponse.body()).getJSONArray("user_info_list"));
          }
        }

        log.info("userInfoList:{}", userInfoList);
        for (Object userInfoObj : userInfoList) {
          JSONObject userInfoJson = (JSONObject) userInfoObj;
          String openid = userInfoJson.getString("openid");
          String oldUnionid = userInfoJson.getString("unionid");
          // 如果获取不到unionid,则跳过
          if (StrUtil.isBlank(oldUnionid)) {
            continue;
          }
          // 如果取到的unionid和传入的unionid一致,则返回openid
          if (StrUtil.equals(unionid, oldUnionid)) {
            result = openid;
            break;
          }
        }
      }
    }
  }
  return result;
}

如何根据code获取微信公众openid以及unionid

这里使用网页授权

image-20240705172304129

这个网页可以嵌入到公众号,点击授权进行用户绑定
1、前端获取到code,传给后端获取openid以及unionid

2、后端除返回openid以及unionid外,将绑定状态一起返回

3、前端进行判断,如果未进行绑定,即需要登录绑定

小程序获取unionid

官方文档说明

image-20240706135626245

通过code换取oppenid以及unionid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UNDO 表空间使用率高 active段占用高 无对应事务执行

UNDO表空间使用率告警&#xff0c;查看占用情况 active段占比很高 select tablespace_name,status,sum(bytes/1024/1024) mb from dba_undo_extents group by tablespace_name,status;不同状态的含义&#xff1a;**ACTIVE **&#xff1a;有活动事务在使用 Undo&#xff0c;这…

掌握Qt的QThread:深入多线程编程

​ &#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加…

产品推荐| 立錡低耗电器件:线性稳压器、Buck 和 Boost 转换器

想让电池用得更久、利用好它的每一份电力&#xff1f;低静态电流的电源转换器是你的必然选择。立錡深谙电源管理之道&#xff0c;为你备好了低耗电的各种产品&#xff0c;其中包括低压差线性稳压器、Buck 转换器和 Boost 转换器&#xff0c;最低消耗仅有 360nA&#xff0c;是无…

前端面试题35(在iOS和Android平台上,实现WebSocket协议有哪些常见的库或框架?)

在iOS和Android平台上&#xff0c;实现WebSocket协议有许多成熟且被广泛使用的库和框架。下面是一些推荐的选项&#xff1a; iOS 平台 SocketRocket 简介&#xff1a;这是由Facebook开源的库&#xff0c;专门为iOS和Mac OS X设计&#xff0c;提供WebSocket连接的功能。它基于S…

Doris数据库---建表、调整表结构操作

一、简介 本文章主讲创建 Doris 自维护的表的语法&#xff0c;以下为本人最近为数据中台接入doris所踩的坑及其解决方案&#xff0c;欢迎点评。 二、doris建表语法&#xff1a; 官网建表语法网址链接&#xff1a;CREATE-TABLE - Apache Doris 官网建表语法如图所示&#xf…

如何查找指定的node版本

1.打开网站 “Node.js — Run JavaScript EverywhereNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/2. 3. 4.

运动爱好者的新选择:哈氪聆光气传导耳机,轻巧又安全

平时不管是漫步街头、骑行穿梭&#xff0c;还是乘坐公共交通时&#xff0c;我总是喜欢佩戴耳机&#xff0c;借此隔绝外部的喧嚣&#xff0c;享受音乐的乐趣。在户外使用耳机&#xff0c;我更倾向于选择气传导耳机&#xff0c;它们更符合我的需求&#xff0c;因为这种耳机能让我…

Hi3861鸿蒙开发环境搭建

1.1 安装配置Visual Studio Code 打开Download Visual Studio Code - Mac, Linux, Windows选择下载安装Windows系统的Visual Studio Code。 下载后进行安装。Visual Studio Code安装完成后&#xff0c;通过内置的插件市场搜索并安装开发所需的插件如图所示&#xff1a; 1.2 安…

OpenCV对图片中的水果进行识别计算其面积长度等

本项目所用到的技术有&#xff1a; OpenCV Python的一些库&#xff1a;sys,openpyxl,numpy,PyQt5,PIL 本文可以做一些课程设计的项目 本文为作者原创&#xff0c;转载请注明出处&#xff0c;如果需要完整的代码&#xff0c;可以关注我私信 上面是用到的样例图片&#xff0c;一张…

万字总结GBDT原理、核心参数以及调优思路

万字总结GBDT原理、核心参数以及调优思路 在机器学习领域&#xff0c;梯度提升决策树&#xff08;Gradient Boosting Decision Tree, GBDT&#xff09;以其卓越的预测性能和强大的模型解释能力而广受推崇。GBDT通过迭代地构建决策树&#xff0c;每一步都在前一步的残差上进行优…

39 线程库

目录 thread类的简单介绍线程函数参数锁线程交替打印原子性操作库无锁CAS智能指针的线程安全单例模式的线程安全 1. thread类的简单介绍 在c11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;如windows和linux下各有自己的接口&#xff0c;这使得…

基于SpringBoot的网上书城管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;基于SpringBoot框架 工具&#xff1a;Eclipse&#xff0c;MySQL 系统展示 首…

数图助推朝阳佳惠辽宁华联开启数字化导航、精细化管理新纪元!

近期&#xff0c;辽宁省著名零售企业朝阳佳惠与辽宁华联&#xff0c;秉持创新精神&#xff0c;大胆尝试&#xff0c;在品类空间管理方面推出了创新举措。引入了先进的数图可视化陈列管理系统&#xff0c;通过智能化、直观化的方式优化商品布局。此举不仅大幅提高了商品管理的效…

探索Qt的QVariant:灵活的数据交换机制

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

windows的远程桌面连接docker

1. Docker容器中运行远程桌面服务 (RDP)&#xff1a;您的Docker容器需要安装和运行远程桌面服务。通常&#xff0c;远程桌面服务在Windows操作系统上可用。如果您使用的是Linux容器&#xff0c;则需要安装一个支持RDP协议的桌面环境和RDP服务器。 2. 开放RDP端口&#xff1a;通…

【正点原子i.MX93开发板试用连载体验】项目计划和开箱体验

本文最早发表于电子发烧友&#xff1a;【   】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)https://bbs.elecfans.com/jishu_2438354_1_1.html 有一段时间没有参加电子发…

Java泛型的定义与运用

泛型 泛型的作用从使用层面上来说是统一数据类型&#xff0c;防止将来的数据转换异常。从定义层面上来说&#xff0c;定义带泛型的类&#xff0c;方法等&#xff0c;将来使用的时候给泛型确定什么类型&#xff0c;泛型就会变成什么类型&#xff0c;凡是涉及到泛型的都会变成确…

飞时达土方计算软件:工程师的得力助手

初识飞时达 飞时达土方计算软件&#xff0c;如同一位默默无闻的工匠&#xff0c;静静地伫立在我的工作台上。它没有华丽的外表&#xff0c;也没有炫目的光环&#xff0c;但它的存在&#xff0c;却如同一盏明灯&#xff0c;照亮了我前行的道路。 初识飞时达&#xff0c;是在一…

Word文件打开密码设置:掌握这两种方法,保护你的文档安全

在日常工作和学习中&#xff0c;我们经常会使用Microsoft Word来创建和编辑文档。有时候&#xff0c;为了保护文档内容不被未经授权的人员查看或修改&#xff0c;我们通常会采用加密的方式来增加其安全性。那么Word文档怎么加密&#xff1f; 方法一&#xff1a;使用Word软件内置…

GTK是如何加密WLAN组播和广播数据的?

1. References WLAN 4-Way Handshake如何生成GTK&#xff1f;_tk bigtk gtk igtk-CSDN博客 2. 概述 在Wi-Fi网络中&#xff0c;单播、组播和广播帧的加密算法是由AP决定的。其中组播帧和广播帧的加密使用GTK密钥&#xff0c;其PTK的密钥结构如下图所示&#xff1a; GTK的组成…