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

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


在这里插入图片描述

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

🏠 :小破站

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

    • 如何通过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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云登陆Centos7

用自己电脑登陆Centos7太麻烦了&#xff0c;还要自己弄个虚拟机&#xff0c;一个电脑里面既有WIN又有LINUX&#xff0c;索性直接买个阿里云服务器&#xff0c;来学习Centos7。 购买 我是新用户&#xff0c;可以试用3个月&#xff0c;先用个3个月再说哈哈哈。 一系列操作之后…

记一次 .NET某酒业业务系统 崩溃分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序每次关闭时就会自动崩溃&#xff0c;一直找不到原因让我帮忙看一下怎么回事&#xff0c;这位朋友应该是第二次找我了&#xff0c;分析了下 dump 还是挺经典的&#xff0c;拿出来给大家分享一下吧。 …

如何在Vue中实现拖拽功能?

Vue.js是一款流行的JavaScript框架&#xff0c;用于构建用户界面。其中一个常见的需求是在Vue中实现拖拽功能&#xff0c;让用户可以通过拖拽元素来进行交互。今天&#xff0c;我们就来学习如何在Vue中实现这一功能。 首先&#xff0c;我们需要明白拖拽功能的基本原理&#xf…

51单片机嵌入式开发:6、 STC89C52RC 定时器0-1-2-看门狗 操作

STC89C52RC 定时器0-1-2-看门狗 操作 1 定时器介绍1.1 定时器概述1.2 课程思路 2 定时器类型2.1 定时器0、12.2 定时器22.3 看门狗定时器2.4 中断介绍 3 定时器操作3.1 定时器0操作3.2 定时器1操作3.3 定时器2操作3.4 看门狗定时器操作 4 定时器总结 1 定时器介绍 1.1 定时器概…

layui项目中的layui.define、layui.config以及layui.use的使用

第一步:创建一个layuiTest项目&#xff0c;结构如下 第二步&#xff1a;新建一个test.js,利用layui.define定义一个模块test,并向外暴露该模块&#xff0c;该模块里面有两个方法method1和method2. 第三步&#xff1a;新建一个test.html&#xff0c;在该页面引入layui.js&#x…

Loadlibrary failed with error 87:参数错误

问题描述&#xff1a; win10 系统在安装 Photoshop 2022 版后&#xff0c;点击桌面图标提示&#xff1a;Loadlibrary failed with error 87&#xff1a;参数错误&#xff0c;反复出现&#xff0c;反复确定&#xff0c;直至软件关闭。 解决方法&#xff1a; 1. 找到 C:\Window…

共筑智能未来 | 思腾合力闪耀2024世界人工智能大会(WAIC 2024)

在刚刚结束的2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;WAIC 2024&#xff09;上&#xff0c;思腾合力作为行业领先的人工智能基础架构解决方案提供商&#xff0c;凭借卓越的产品和解决方案&#xff0c;成为展会上的亮点之一。此次盛会不仅展示了全球人工智…

C++ Qt 自制开源科学计算器

C Qt 自制开源科学计算器 项目地址 软件下载地址 目录 0. 效果预览1. 数据库准备2. 按键&快捷键说明3. 颜色切换功能(初版)4. 未来开发展望5. 联系邮箱 0. 效果预览 普通计算模式效果如下&#xff1a; 科学计算模式效果如下&#xff1a; 更具体的功能演示视频见如下链接…

Java版Flink使用指南——从RabbitMQ中队列中接入消息流

大纲 创建RabbitMQ队列新建工程新增依赖编码设置数据源配置读取、处理数据完整代码 打包、上传和运行任务测试 工程代码 在《Java版Flink使用指南——安装Flink和使用IntelliJ制作任务包》一文中&#xff0c;我们完成了第一个小型Demo的编写。例子中的数据是代码预先指定的。而…

74HC165芯片验证

目录 0x01 74HC165芯片介绍0x02 编程实现 0x01 74HC165芯片介绍 74HC165的引脚定义如下&#xff0c;长这个样子 ABCDEFGH是它的八个输入引脚&#xff0c;例如你可以将它连接按键&#xff0c;让它来读取8个按键值。也可以将他级联其它的74165&#xff0c;无需增加单片机GPIO引…

Nginx+Tomcat群集

一.实验环境 二.安装多台Tomcat服务器 1.在安装Tomcat之前必须先安装JDK。 JDK的全称是Java Development Kit&#xff0c;是sun公司提供的JAVA语言的软件开发工具包&#xff0c;其中包含Java虚拟机&#xff08;JVM&#xff09;&#xff0c;编写好的Java源程序经过编译可形成Ja…

bert-base-chinese模型离线使用案例

import torch import torch.nn as nn from transformers import BertModel, BertTokenizer# 通过torch.hub(pytorch中专注于迁移学的工具)获得已经训练好的bert-base-chinese模型 # model torch.hub.load(huggingface/pytorch-transformers, model, bert-base-chinese) model…

Python 定义和调用函数

在Python编程中&#xff0c;函数是组织和重用代码的一种重要方式。函数可以提高代码的可读性和维护性&#xff0c;并且可以避免重复代码。 1. 定义函数 在Python中&#xff0c;函数使用def关键字定义。一个简单的函数定义包括函数名、参数列表和函数体。以下是一个基本的函数…

[Python爬虫] 抓取京东商品数据||京东商品API接口采集

本文结构&#xff1a; 一、引言 二、代码分享 三、问题总结 引言 这两天因为一些需求&#xff0c;研究了一下如何爬取京东商品数据。最开始还是常规地使用selenium库进行商品页的商品抓取&#xff0c;后来因为想要获取优惠信息&#xff0c;只能进入到商品详情页进行抓取&#x…

苏东坡传-读书笔记十一

苏东坡对写作与风格所表示的意见最为清楚。他说做文章“大略如行云流水&#xff0c;初无定质&#xff0c;但常行于所当行&#xff0c;常止于所不可不止。文理自然&#xff0c;姿态横生。孔子曰&#xff1a;‘言之不文&#xff0c;行而不远。’又曰&#xff1a;‘辞达而已矣。’…

【Linux】:进程等待

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux进程等待的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门…

电竞玩家的云端盛宴!四大云电脑平台:ToDesk、顺网云、青椒云、极云普惠云实测大比拼

本文目录 一、云电脑概念及市场需求二、云电竞性能测试2.1 ToDesk云电脑2.2 顺网云2.3 青椒云2.4 极云普惠云电脑 三、四大云电脑平台综合配置对比3.1 CPU处理器3.2 GPU显卡3.3 内存 四、总结 一、云电脑概念及市场需求 在数字化时代的推动下&#xff0c;云计算技术日益成熟&a…

JAVA 代码块介绍

一、基本介绍 代码化块又称为初始化块&#xff0c;属于类中的成员[即 是类的一部分]&#xff0c;类似于方法&#xff0c;将逻辑语句封装在方法体中&#xff0c;通过包围起来。 但和方法不同&#xff0c;没有方法名&#xff0c;没有返回&#xff0c;没有参数&#xff0c;只有方…

Java面试八股之MySQL支持哪些数据类型

MySQL支持哪些数据类型 MySQL支持多种数据类型&#xff0c;这些类型可以大致分为三大类&#xff1a;数值类型、日期/时间类型和字符串类型。下面是一些常见的数据类型及其用途&#xff1a; 数值类型 整数类型&#xff1a; TINYINT&#xff1a;通常占用1字节。 SMALLINT&am…

注册商标为什么要先查询

注册商标为什么要先查询 在知识产权日益受到重视的今天&#xff0c;商标的注册成为了许多企业和个人保护其品牌价值和市场地位的重要手段。然而&#xff0c;商标注册并非一蹴而就的过程&#xff0c;其中一个关键的步骤就是商标查询&#xff0c;也就是我们通常所说的“商标检索…