目录
- 历史背景
- AppID
- AppSecret
- OpenID
- UnionID
- 三者区别
- 使用方法
- AppID
- OpenID/**UnionID**
- 拓展
历史背景
基本概念介绍 | 微信开放文档
微信小程序:一文彻底搞懂openid和unionid-腾讯云开发者社区-腾讯云
用户进行小程序登陆时,需要获取用户信息,但是不能和原有的微信账号体系一致,这会导致用户原本的信息泄露,于是需要设计一套新的权限模式。
AppID
- AppID 是微信应用的标识符,每个微信应用都有一个唯一的AppID,针对开发者维度
- 它是开发者在微信开放平台注册应用时由微信分配的,用于标识应用的身份,在调用微信API时,通常需要提供AppID来验证开发者的身份
- 但是我们协作开发的时候,通过管理员通过微信号添加协作者进行开发,这样可以利用主AppID进行开发
AppSecret
51b6e0bcc165904f6a232b3b3db62286
- 微信小程序的 AppSecret(小程序密钥)是微信开放平台提供给开发者的一种安全机制,用于保护小程序的数据安全和验证开发者身份。
- 具体可以进行:身份验证、获取 access_token、数据加密、服务器间通信、数据安全等
OpenID
- OpenID 是微信用户的标识符,每个用户在每个应用中都有一个唯一的OpenID,区分不同应用中的用户身份
- 当用户首次使用微信登录某个应用时,应用会获取到该用户的OpenID,同一个用户在不同的应用中的OpenID是不同的,这样可以保护用户的隐私
UnionID
- UnionID 是微信用户的统一标识符,同一个微信开放平台下的不同应用,UnionID 是相同的
- 它是为了方便开发者管理用户身份而设计的,这样如果用户在多个应用中使用相同的微信账号登录,这些应用可以通 过 UnionID 来识别出是同一个用户
三者区别
三者的区别其实很简单,可以把他们抽象成日常生活中常见的手机卡运营商。运营商有很多不同的品牌,如 联通、电信、移动等,这就是 AppID。用户在不同的平台购买手机卡,平台会生成一个独一无二的手机号,这里可以看成 OpenID。但是小王购买了这么多手机号,不同的营业厅想要验证身份通过唯一的身份证验证,这就是 UnionID。
使用方法
AppID
https://mp.weixin.qq.com/wxamp/devprofile/get_profile?token=33657168&lang=zh_CN
AppSecret 直接在微信平台生成保存好就行
OpenID/UnionID
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 主要有以下用途:
- 用户识别:openid 是用户在小程序中的唯一标识,用于区分不同的用户。
- 数据加密:session_key 用于加密和解密用户敏感数据,确保数据传输的安全性。
- 身份验证:两者结合使用,可以在服务器端验证用户身份,进行安全的用户会话管理。
- 个性化服务:基于 openid,开发者可以为用户提供个性化的内容和服务。
- 用户分析:openid 可用于服务器端的用户行为分析和数据统计。
拓展
傻傻分不清之 Cookie、Session、Token、JWT