【拓展】理解AppID、OpenID、UnionID

5.png


目录

  • 历史背景
  • AppID
  • AppSecret
  • OpenID
  • UnionID
  • 三者区别
  • 使用方法
    • AppID
    • OpenID/**UnionID**
    • 拓展


历史背景

基本概念介绍 | 微信开放文档
微信小程序:一文彻底搞懂openid和unionid-腾讯云开发者社区-腾讯云
用户进行小程序登陆时,需要获取用户信息,但是不能和原有的微信账号体系一致,这会导致用户原本的信息泄露,于是需要设计一套新的权限模式。

AppID

1.png

  • AppID 是微信应用的标识符,每个微信应用都有一个唯一的AppID,针对开发者维度
  • 它是开发者在微信开放平台注册应用时由微信分配的,用于标识应用的身份,在调用微信API时,通常需要提供AppID来验证开发者的身份
  • 但是我们协作开发的时候,通过管理员通过微信号添加协作者进行开发,这样可以利用主AppID进行开发

AppSecret

51b6e0bcc165904f6a232b3b3db62286

  • 微信小程序的 AppSecret(小程序密钥)是微信开放平台提供给开发者的一种安全机制,用于保护小程序的数据安全和验证开发者身份。
  • 具体可以进行:身份验证、获取 access_token、数据加密、服务器间通信、数据安全等

OpenID

  • OpenID 是微信用户的标识符,每个用户在每个应用中都有一个唯一的OpenID,区分不同应用中的用户身份
  • 当用户首次使用微信登录某个应用时,应用会获取到该用户的OpenID,同一个用户在不同的应用中的OpenID是不同的,这样可以保护用户的隐私

UnionID

  • UnionID 是微信用户的统一标识符,同一个微信开放平台下的不同应用,UnionID 是相同的
  • 它是为了方便开发者管理用户身份而设计的,这样如果用户在多个应用中使用相同的微信账号登录,这些应用可以通 过 UnionID 来识别出是同一个用户

三者区别


三者的区别其实很简单,可以把他们抽象成日常生活中常见的手机卡运营商。运营商有很多不同的品牌,如 联通、电信、移动等,这就是 AppID。用户在不同的平台购买手机卡,平台会生成一个独一无二的手机号,这里可以看成 OpenID。但是小王购买了这么多手机号,不同的营业厅想要验证身份通过唯一的身份证验证,这就是 UnionID。

使用方法

AppID

1.png
https://mp.weixin.qq.com/wxamp/devprofile/get_profile?token=33657168&lang=zh_CN
AppSecret 直接在微信平台生成保存好就行

OpenID/UnionID

0.png

wx.login({success (res) {if (res.code) {console.log('code:', res.code)//发起网络请求wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session',data: {appid:'wxee24caea5cae426a', secret:'5175859809cc0cae756213dbf1106e11', js_code:res.code,grant_type:'authorization_code' },success: res => {if (res.data.openid) {console.log('成功获取openid:', res.data.openid); // 成功获取到openid} else {console.error('获取openid失败:', res.data.errmsg); // 没有获取到openid,返回错误信息}},fail: err => {console.error('请求失败:', err.errMsg); // 请求失败,返回错误信息}})} else {console.log('登录失败!' + res.errMsg)}}
})
rid: 64407db4-787c85db-334c5ff0 --- code过期
rid: 64407db4-6cdf4a6f-6f3f7836 ---code重复使用
rid: 64407db4-6f6c2ac3-12a35a73 ---code错误	
  • wx.login 是微信小程序提供的 API 之一,用于实现用户的登录功能。当调用 wx.login 时,如果用户之前没有登录过,会弹出授权窗口,请求用户授权。
  • 一旦用户同意授权,微信就会返回一个唯一的登录凭证(code),这个 code 是临时的(5分钟内),并且在每次用户登录时都是唯一的。
  • 如果用户之前已经登录过与小程序绑定的同一开放平台账号下的其他应用(如公众号或另一个小程序),并且已经授权,那么在获取 openid 的同时,也可以获取到 unionid。

微信小程序返回的 openid 和 session_key 主要有以下用途:

  1. 用户识别:openid 是用户在小程序中的唯一标识,用于区分不同的用户。
  2. 数据加密:session_key 用于加密和解密用户敏感数据,确保数据传输的安全性。
  3. 身份验证:两者结合使用,可以在服务器端验证用户身份,进行安全的用户会话管理。
  4. 个性化服务:基于 openid,开发者可以为用户提供个性化的内容和服务。
  5. 用户分析:openid 可用于服务器端的用户行为分析和数据统计。

拓展

傻傻分不清之 Cookie、Session、Token、JWT

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

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

相关文章

通用的ERP系统功能清单有哪些?

一、通用的ERP系统功能清单 通用的ERP(Enterprise Resource Planning,企业资源计划)系统是一套集成的业务应用程序,旨在帮助企业有效管理财务、销售、运营等关键业务流程。以下是一个清晰的ERP系统功能清单,涵盖了其主…

类和对象-友元-友元类

友元类 #include<iostream> #include<string> using namespace std;// 前向声明 class Building;class GoodGay { public:GoodGay();void visit(); // 访问函数&#xff0c;访问Building中的属性private:Building * building; // 指向Building的指针 };class Bui…

【Flutter】列表流畅性优化

前言 在日常APP的开发中&#xff0c;列表是使用频率最高的&#xff0c;这里讲述在Flutter中优化列表的滑动速度与流畅度&#xff0c;以来提高用户的体验。 方案 1、使用ListView.builder代替ListView ListView.builder在创建列表的时候要比ListView更高效&#xff0c;因为L…

完成一个逻辑,点击一个按钮让按钮旁边的input输入框中写入‘你好‘

问: 完成一个逻辑,点击一个按钮让按钮旁边的input输入框中写入你好 回答: <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1…

AUTOSAR NvM模块(六)

NvMRbRamInitCheck 允许选择NvM模块在发生复位时的行为。 NVM_RB_RAM_INIT_CHECK_NONE&#xff1a;在复位后&#xff0c;NvM_ReadAll()会读取所有适合ReadAll的块。 NVM_RB_RAM_INIT_CHECK_QUICK&#xff1a;在复位后&#xff0c;会检查保存区是否丢失。如果未丢失&#xff…

工程技术类SCI,低分快刊首选期刊,无版面费!

1、期刊概况 【期刊简介】IF&#xff1a;1.0-2.0&#xff0c;JCR2区&#xff0c;中科院4区&#xff1b; 【检索情况】SCIE在检 【版面类型】正刊&#xff0c;仅少量版面&#xff1b; 【出刊频率】年刊 2、征稿范围 本刊主要是发表有关能源转型和可再生能源需求相关的研究文…

Snappy使用

Snappy使用 Snappy是谷歌开源的压缩和解压的开发包&#xff0c;目标在于实现高速的压缩而不是最大的压缩 项目地址&#xff1a;GitHub - google/snappy&#xff1a;快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake&#xff0c;CMake 3.16.3 or higher is requi…

一首歌的时间 写成永远

大家好&#xff0c;我是秋意零。 就在&#xff0c;2024年6月20日。我本科毕业了&#xff0c;之前专科毕业挺有感触&#xff0c;也写了一篇文章进行记录。如今又毕业了&#xff0c;还是写一篇文章记录吧&#xff01;&#xff01; 专科毕业总结&#xff1a;大学三年总结&#xf…

Jtti:怎么在FTP服务器上实现多种操作系统的客户端连接?

随着全球互联网的普及&#xff0c;文件传输协议(FTP)成为了跨平台文件共享和传输的主流选择之一。FTP服务器作为地方性的网络存储设施&#xff0c;其支持多种操作系统的客户端连接&#xff0c;为用户提供了便捷的文件存取方式。无论您使用的是Windows、MacOS还是Linux操作系统&…

【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件

文章目录 前言 一. SpringBoot3介绍1.1 SpringBoot项目创建1. 创建Maven工程2. 添加依赖(springboot父工程依赖 , web启动器依赖)3. 编写启动引导类(springboot项目运行的入口)4. 编写处理器Controller5. 启动项目 1.2 项目理解1. 依赖不需要写版本原因2. 启动器(Starter)3. Sp…

vue项目访问 域名/index.html 空页面问题

很大可能是vue前端没做404页面&#xff0c;在路由不匹配时会跳转到空路由页面。 也可以把所有路由不匹配的网址全部跳转到域名首页。防止出现404或者页面错误。 如果使用docker nginx部署项目&#xff0c;配置文件上会有 try_files $uri $uri/ /index.html; 这段配置会尝试…

二刷 动态规划

什么是动态规划 Dynamic Programming DP 如果某一问题有很多重叠子问题&#xff0c;使用动态规划时最有效的 动态规划中每一个状态是由上一个状态推导出来的。 动规五部曲 1.确定dp数组以及下标的含义 2.确定递归公式 3.dp数组如何初始化 4.确定遍历顺序 5.举例推导dp数…

【java计算机毕设】仓库管理系统 MySQL springboot vue3 Maven 项目源码代码

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】仓库管理系统MySQL springboot vue3 Maven小组项目设计源代码 2项目介绍 系统功能&#xff1a; vue3仓库管理系统&#xff0c;主要功能包含&#xff1a;个人信息管理&#xff0c;仓库管理&#xff0c;员工…

java设计模式(七)适配器模式(Adapter Pattern)

1、模式介绍&#xff1a; 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许将一个类的接口转换成客户希望的另外一个接口。适配器模式通常用于需要复用现有的类&#xff0c;但是接口与客户端的要求不完全匹配的情况。它包括两种形式&…

智能洗车管理系统设计

智能洗车管理系统设计的核心在于整合先进的信息技术与自动化设备&#xff0c;以提升洗车服务的效率、降低成本并增强客户体验。以下是一个概括性的设计框架&#xff1a; 1. 系统需求分析 用户需求&#xff1a;了解车主对于快速、便捷、高质量洗车服务的需求。业务需求&#xf…

【深度学习】注意力机制

https://blog.csdn.net/weixin_43334693/article/details/130189238 https://blog.csdn.net/weixin_47936614/article/details/130466448 https://blog.csdn.net/qq_51320133/article/details/138305880 注意力机制&#xff1a;在处理信息的时候&#xff0c;会将注意力放在需要…

gitee项目上不同的项目分别使用不用的用户上传

最近使用根据需要&#xff0c;希望不同的项目使用不同的用户上传&#xff0c;让不同的仓库展示不同的用户名&#xff01;&#xff01;&#xff01; 第一步查看全局的用户信息&#xff1a; # 查看目前全局git配置信息 git config -l #会输出全局的git配置信息 第二步进入到要设…

大科技公司大量裁员背后的真相

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

冒泡排序、选择排序、菱形

冒泡排序、选择排序、菱形 文章目录 一、冒泡排序二、选择排序三、菱形 一、冒泡排序 思路&#xff1a; 外层&#xff08;第一层&#xff09;循环控制循环次数&#xff0c;和业务无关 内层&#xff08;第二层&#xff09;循环用于比较相邻的2个值的大小&#xff0c;根据小到大…

【Python】语法入门

文章目录 Python 基础语法&#xff1a;打印和变量打印和变量的基本语法打印变量 变量操作变量的命名规则打印和变量的应用场景示例&#xff1a;基本计算器 Python 基础语法&#xff1a;列表推导式列表推导式的基本语法基本示例带条件的列表推导式列表推导式的应用场景 Python 基…