同一个公众号下的同一个用户,openid不一致?

news2025/1/13 7:56:23

背景

  • 公众号授权页面,前端采用的snsapi_userinfo,在用户尚未点击“获取完整性服务”的时候,服务端通过前端的code拿到了一个openid。
  • 在用户点击了“获取完整性服务”之后,服务端通过前端的code拿到了另一个openid。
  • 同一个用户在同一个公众号下两次获取的openid不一样。

原因

在这里插入图片描述

数据

在这里插入图片描述
如图,按微信官方说法,再未点击“获取完整性服务”前,获取到了一组虚拟账号数据。

解决方案

前端采用的snsapi_base进行无感知授权,后端用同样的手段,可以拿到用户信息。

第1步:获取code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=${config.appid}&redirect_uri=${url}&response_type=code&scope=snsapi_base&state=123&connect_redirect=1#wechat_redirect
第2步:获取access_token和openid
https://api.weixin.qq.com/sns/oauth2/access_token?appid=xx&secret=xx&code=xx&grant_type=authorization_code

返回值:
//请求成功:{
	//  "access_token":"ACCESS_TOKEN",
	//  "expires_in":7200,
	//  "refresh_token":"REFRESH_TOKEN",
	//  "openid":"OPENID",
	//  "scope":"SCOPE"
	//}
第3步:获取用户信息
https://api.weixin.qq.com/sns/userinfo?access_token=xx&openid=xx&lang=zh_CN

返回值:
//请求失败:{"errcode":40003,"errmsg":" invalid openid "}
	//请求成功:{
	//  "openid": "OPENID",
	//  "nickname": NICKNAME,
	//  "sex": 1,
	//  "province":"PROVINCE",
	//  "city":"CITY",
	//  "country":"COUNTRY",
	//  "headimgurl":"https://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
	//  "privilege":[ "PRIVILEGE1" "PRIVILEGE2"     ],
	//  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
	//}

注意:以上步骤在用户关注和未关注该公众号的情况下,获取效果一致(亲测)。

总结

现在终于明白返回的快照字段是何意义了:
在这里插入图片描述
在这里插入图片描述

微信开放社区的问题

  • 同一个公众号下的同一个用户,openid不一致?
  • 为什么对于同样一个用户,openid会变啊

参考

  • 微信开发详解scope—snsapi_base和snaspi_userinfo 区别
  • 公众号非弹窗无感 获取微信昵称及头像,增加客户体验
  • 微信网页授权能力调整公告
  • 微信网页开发 /网页授权

以上信息仅供交流学习,如有错误请留言指正。

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

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

相关文章

计算机网络之Socket编程

文章目录 前言一、Socket编程二、TCP套接字编程三、UDP套字编程总结 前言 TCP、UDP套接字编程 一、Socket编程 应用进程使用传输层提供的服务才能够交换报文,实现应用协议,实现应用 TCP/IP:应用进程使用Socket API访问传输服务地点&#xff…

11-30 SpringBoot

内嵌的tomcat tomcat的依赖 对于tomcat其实还是一个jar包 spring是一个IOC容器 tomcat的核心对象交给Spring容器 调用核心对象方法 启动Tomcat 1.添加依赖 tomcat-embed-core,叫做tomcat内嵌核心。就是这个东西把tomcat功能引入到了我们的程序中的 排除tomcat&a…

改造python3中的http.server为简单的文件下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler,实现简单的文件上传下载服务 simple_http_file_server.py: # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

游戏反Frida注入检测方案

在游戏安全对抗过程中,有不少外挂的实现基于对游戏内存模块进行修改,这类外挂通常会使用内存修改器,除此之外,还有一种门槛相对更高、也更难检测的「注入挂」。 据FairGuard游戏安全数据统计,在游戏面临的众多安全风险…

uniapp微信小程序实现地图展示控件

最终实现效果: 地图上展示控件,并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式,使用好看的图标 3.控件绑定点击事件 一、前言 原本使用的是control…

应用于智慧城管的AI边缘盒子+AI算法一体化解决方案

智慧城管支持十几种城市违规违法场景的识别,覆盖着市容环境、街面秩序、宣传广告、市政设施等类别,能够在很大程度上引导责任单位进行自动整改和自治,积极引导市民加强自我约束、自我教育、自我管理,努力增强市民参与城市管理的责…

Maya 2024(3D建模、动画和渲染软件)

Maya 2024是一款非常强大的3D建模、动画和渲染软件,它提供了许多新功能和改进,以帮助建模师、动画师和渲染师更加高效地进行创作。 在建模方面,Maya 2024引入了Symmetry(对称)功能,可以在网格两侧生成均匀…

(分类)KNN算法- 参数调优

在此专栏的上一篇文章的基础上,进行交叉实验获取最佳的K值 上一篇文章:KNN算法案例-鸢尾花分类 数据拆分的过程: 交叉验证(Cross Validation) 是一种在机器学习中广泛使用的模型评估和参数调优方法。在训练模型时&…

设计模式精讲:掌握工厂方法与抽象工厂的精髓

设计模式精讲:掌握工厂方法与抽象工厂的精髓 一、引言:如何学习设计模式?二、工厂方法(也叫工厂模式)2.1、代码结构2.2、符合的设计原则2.3、小结 三、抽象工厂3.1、代码结构3.2、符合的设计原则3.3、小结 总结 一、引…

麒麟操作系统根目录权限777修复方法

在麒麟操作系统中,误操作执行:chmod -R 777 /后,整个根目录权限都变成了777,先找一台相同版本的系统,越干净越好,把该系统的权限导出。 1.在好的机器上执行: #cd / 到根目录 # sudo…

Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 构建可移植的计算机视觉环境 文章目录 前言引言简介:目的和重要性: 深入理解Docker和OpenCVDocker的基本概念和优势:OpenCV简介和应用领域:…

四、虚拟机网络配置

目录 1、VMware网卡配置模式 1.1 桥接模式 1.2 NAT模式 1.3 仅主机模式 ​​​​​​​2、编辑虚拟机的网络编辑器 ​​​​​​​3、编辑Window的虚拟网卡 ​​​​​​​4、修改IP地址为静态 4.1 查看网卡名字 4.2 编辑修改网卡IP地址的配置文件 4.3 重启网络: 4.…

【Docker】Swarm的overlay网络

对于理解swarm的网络来讲,个人认为最重要的两个点: 第一是外部如何访问部署运行在swarm集群内的服务,可以称之为入方向流量,在swarm里我们通过ingress来解决。 第二是部署在swarm集群里的服务,如何对外进行访问&…

探索Playwright的现代自动化测试力量

在当今数字化时代,Web应用程序的质量和稳定性对于企业的成功至关重要。为了确保Web应用程序的无缝运行,自动化测试工具成为了开发人员和测试团队的重要工具。多年来,Selenium一直是自动化测试的黄金标准,然而,在不久前…

从0开始学习JavaScript--JavaScript CommonJS 和 Node.js 模块系统

JavaScript 的模块系统是实现模块化开发的关键,而 CommonJS 规范及其在 Node.js 中的应用是其中最为突出的例子。本文将深入研究 JavaScript 中的 CommonJS 模块规范,解析其核心概念,并通过丰富的示例代码展示其在 Node.js 中的实际应用。 C…

MySQL核心知识点整理大全1-笔记

MySQL 是一种流行的关系型数据库管理系统,它是以C和C语言编写的,最初是由瑞典公司MySQL AB开发的,现在是由Oracle公司维护和支持。MySQL是开源软件,可在Windows、Linux、Mac OS、FreeBSD等各种操作系统上运行。MySQL的主要特点是速…

数字图像处理(实践篇)十四 图像金字塔

目录 一 图像金字塔 二 涉及的函数 三 实践 一 图像金字塔 在某些情况下,需要处理不同分辨率的(相同)图像。比如,在图像中搜索某些目标(比如人脸)的时候,不确定该目标在所述图像中会以多大的…

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于象群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.象群算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

HTML5+CSS3小实例:纯CSS实现文字组成肖像特效

实例:纯CSS实现文字组成肖像特效 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…

Java SpringBoot Controller常见写法

文章目录 环境Controller调用脚本运行结果总结 环境 系统: windows 11 工具: java, idea, git bash Controller 接口常见有以下几种方式 其中&#xff1a; Tobj 调用脚本 我的是windows 系统&#xff0c;使用 git bash 窗口运行, 用 cmd 或者 power shell 会有问题 curl …