高考考试网
当前位置: 首页 高考资讯

微信的OpenID和UnionID到底的哪些秘密

时间:2023-06-12 作者: 小编 阅读量: 2 栏目名: 高考资讯

开发者可以通过微信官方提供的登录能力方便地获取OpenID。后端通过key获取到value,来维护用户身份。主要主体拥有了用户的UnionID,就可以自己授权用户登陆主体下的其他应用。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。开发者可以直接通过wx.logincode2Session获取到该用户UnionID,无须用户再次授权。

话不多说,直奔主题,当然也不是谈论什么惊天大秘密,只是公开的小秘密。

OpenID: 相当于用户在应用(小程序、公众号、小游戏)里的userid,这个id在本应用里固定不变,但是不同应用的OpenID不一样。比如在抖音小程序的OpenID是1,在头条小程序的OpenID是2。

开发者可以通过微信官方提供的登录能力方便地获取OpenID。官方流程如下图。

  1. 小程序前端通过wx.login()获取一个用户的临时code(有效期五分钟),然后通过wx.request()接口发送到开发者服务器。

wx.login({success (res) {if (res.code) {//发起网络请求wx.request({url: 'http://test.com/onLogin',data: {code: res.code}})} else {console.log('登录失败!'res.errMsg)}}})

  1. 开发者服务器通过前端传过来的code,再加上appid appsecret请求微信服务器,获取用户OpenID和session_key。其中session_key是有有效期的,至于多少开发者不知道。之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。官方建议不要把openid和session_key给小程序前端,而是在后端把他们作为value存到缓存中,把key传给前端。前端在调用接口的时候带上key。后端通过key获取到value,来维护用户身份。

请求地址:GET http://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

  • 为什么每个应用的OpenID不一样,如果每个微信用户在不同的应用中OpenID,岂不是更好维护。

其实还是为了安全,如果OpenID一样,首先我们就可以通过OpenID做一些营销,就比如我们现在收到的垃圾短信,因为我们对外界暴露的手机号只有一个。但是如果我们给每个商家留的手机号不一样,短信只收这个商家的,那我们就少了许多垃圾短信。再有就是,几个微信大号有上亿的粉丝,如果让他们掌握了OpenID,也就是间接地掌握了微信用户的一些信息。微信肯定是不允许这样的。

UnionID:一个主体(公司)下的用户唯一标识。之前讲的抖音和头条的OpenID不一样。既然他们都属于字节跳动,为什么登陆授权了头条,再用抖音的时候还需要登陆授权呢。就是老生常谈的SSO。UnionID就是为了解决这个问题而生。主要主体拥有了用户的UnionID,就可以自己授权用户登陆主体下的其他应用。当然用户在每个主体里的UnionID也是不一样的。

用户可以通过如下方式获取UnionID。

1. 调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。2. 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.logincode2Session 获取到该用户 UnionID,无须用户再次授权。3. 如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.logincode2Session 获取到该用户 UnionID ,无须用户再次授权。4. 用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的5分钟内有效,请开发者妥善处理。5. 小程序端调用云函数时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过 cloud.getWXContext 获取 UnionID。6. 小程序端调用云函数时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过 cloud.getWXContext 获取 UnionID。

总结 : OpenID的是针对单个应用的,UnionID针对主体的。

    推荐阅读
  • 薛怎么读(汉字薛怎么读)

    薛姓,是中国一种姓氏。始祖奚仲,因分封在薛国而得姓,以封邑名为氏,得姓始祖为黄帝之子禺阳第十二世孙奚仲,后人有以国名为氏。部分后裔为虞舜后裔孟尝君(田文)之后。薛姓发源地有山东省滕州市。薛姓在《百家姓》中排名第68位。薛氏以山西、江苏、陕西、河北、福建、山东等省为多,这几个地区的薛氏占到中国汉族薛氏人口的63%。第六次人口普查结果显示薛氏人口增至为720余万,占全国人口的0.53%,为排行第35位的大姓。

  • 祭龙节是澜沧江湄公河流域什么时的节日(祭龙节的简介)

    祭龙分大祭和小祭,小祭即杀猪宰鸡,大祭则宰牛,祭礼由村中德高望重的被称为“龙头”的老人主持,祭坛设在“龙树下”。各家各户自己置办齐猪、鸡、鸭等祭物,由家中男性前往献祭。祭时停产三日,祭后的第一个午日,各户派一个男性自带酒肉去“龙头”家聚餐,以示谢意。

  • 戴尔灵越14plus深度评测(戴尔灵越14Plus)

    ↑灵越14Plus色彩覆盖报告接口方面则一直是MacBook的弱项。MacBookAir为了轻薄,整机只有两个雷电接口和一个耳机孔。24MB的三级缓存和45W的基准功耗则与上代保持一致。在灵越14Plus上,这枚RTX3050可以实现单烤50W的水平,表现同样不错。i7-12700HRTX3050这两枚核心加在一起总的性能释放约70W。核显方面,Air版仅搭载了残血的7核CPU。M1的单核1740分,多核7729分,单核性能略有领先,多核则与酷睿i7有很明显的差距。

  • 全国各地车牌字母代表的城市(各省车牌A打头的都是省会城市)

    我们去各地旅游,城市千人一面,但机动车牌照却是各不相同。图片来自网络当然凡事都有例外,福建省的牌照划分就很有意思,当你还在疑惑为什么闵B不是厦门时,看看上面的福建牌照地图,是不是就一笑释然了。原来福建牌照是以省会福州为起点,顺时针绕了一圈,真有创意,也非常好记。

  • 西安社区工作者报名需要提交什么材料

    报名时使用的身份证应与考试时出示的身份证保持一致;③与放宽条件要求相关的资格证书原件电子版,退役军人须上传退役证件原件电子版。④与放宽条件要求相关的资料,所在镇(街)出具的工作任职证明或劳动合同原件的电子版。已通过资格初审的,不得更改报名信息或改报其他区县、开发区岗位。如应聘人员所填信息与本人真实信息不符,后果自负。

  • 感叹号标志代表的是什么 感叹号的标志是什么标志

    交通警告标志的作用就是将这些信息提前直观地传递给驾驶员,为其判断和采取措施争取时间。

  • 每天坚持喝豆浆会怎么样(喝豆浆有你想得那么好那么健康吗)

    每天坚持喝豆浆会怎么样◆◆喝豆浆的好处:1、防止支气管炎,豆浆所含的麦氨酸又防止支气管炎平滑肌痉挛的作用,从而减少和减轻支气管炎的发作。黄豆中富含嘌呤,且嘌呤是亲水物质,因此,黄豆磨成浆后,嘌呤含量比其他豆制品多出几倍。

  • 静心喝茶文案短句(适合喝茶发的古风文案)

    4.把往事煮成茶,从此清苦不为她。24.捻一缕茶香,只想守半盏时光。

  • 不孝有三是指哪三种不孝(不孝有三是指哪三种)

    而到了孟子时代,儒家思想已经开始反思,对于这种情况,孟子的儒家思想认为这就是“阿意曲从,陷亲不义”,即不孝。孔子的思想是认为“用天之道,分地之利,谨身节用,以养父母,此庶人之孝也。”不娶无子,绝先祖祀,不娶妻生子,断绝后代,这是第三种不孝。没有尽到作为后代的责任,这叫无后。是他把“无后为大”理解成不娶妻生子、断绝香火。如此看来,“无后”反而排在第三位,并不是什么真正的“为大”。

  • 魏无羡和蓝忘机一起入魔道(羡羡与兔兔22一人一兔对峙)

    一只兔子被蓝湛禁言了,这简直是前所未闻的事情。至少在魏无羡看来。“蓝湛对可爱的兔兔都下得了这么狠的手。”魏无羡终于不闹腾了,软瘫在笼子里,但心里一阵埋怨,蓝湛把他抓来,自己却在看书,他在搞什么鬼。魏无羡胡乱点头。等等,蓝湛养了这么多只兔子,是不是在研究什么仙药,拿这些可爱的兔兔来试药……魏无羡越想越觉得可疑。蓝忘机一只大手伸进来,兔子躲了躲,却依然惨遭毒手,被捞了出去。魏无羡绝望地尖叫。