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

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

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

开发者可以通过微信官方提供的登录能力方便地获取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针对主体的。

    推荐阅读
  • lol龙魂怎么获得(新版本的龙魂)

    lol龙魂怎么获得当一个队伍击杀掉第四条同属性元素亚龙时,他们将获得强力的龙魂。龙魂会在直到死亡之前一直存在。山脉龙魂,如五秒内未承受伤害,获得一个持续至被击破为止的护盾。海洋龙魂,对敌人造成伤害将在三秒内回复生命值并恢复法力值,对小兵和野怪造成伤害的回复效率是30%。元素亚龙争夺战的报酬,它将提供类似史诗野怪增益般强大的奖励,龙魂并不能提供像男爵或远古巨龙那样瞬时的增益。

  • 贾元春被封妃(贾元春被封为贵妃)

    红楼中有一明一暗两条主线,明线是宝玉黛玉和宝钗三者之间的感情纠葛,暗线是元春被封为贵妃又突然失宠,使贾府从巅峰走向衰败,后来还被直接被抄家,这条暗线描述的颇为隐晦。更加纳闷的是,秦可卿死后,贾元春突然被封为贵妃,封号是贤德妃,这是啥子情况?令其子孙扶柩由北下之门入都,恩赐私第殡殓,朝中由王公以下准其祭吊。

  • win10系统任务管理器打不开怎么办(找回Win7经典任务管理器)

    最近有国外用户,提供了一则在Win10中替换使用旧版任务管理器的方法。否则系统检测到文件篡改后,会自动的将其用原始文件替换掉,因此这里改名为“Tm.exe”。毕竟Win10预览版第一个更新还在路上,距离正式版发布也还有很长的路要走。

  • 微信视频突然连接失败(这种情况该怎么办)

    微信视频突然连接失败微信视频突然连接失败需要检查以下问题:检查是不是账户输入有误。如果微信登陆不上的话,第一个先要检查的自然是你输入的账户和密码是不是正确,如果输入有误,自然是登陆不上的,此时出现连接失败很正常,记得把正确的账户名和密码输入对就行了。

  • 刷机双清是什么意思(什么是刷机双清)

    跟着小编一起来看一看吧!刷机双清是什么意思wipe从英文单词的字面意思来理解就是:揩,擦;揩干,擦净的意思。从刷机爱好者的专业角度来理解可以认为是一种对手机数据擦除的操作。关于wipe是什么意思比较专业的解答为:wipe就是恢复了出厂设置的意思,包括联系人、短信、安装的软件等全部删除。俗称硬启,恢复出厂设置。注意:wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。

  • 检察机关推动从严治检向纵深发展(深化检律良性互动)

    全国人大代表、河北省曲周县清宾出租车公司爱心车队队长张青彬表示。从严监督纠正执法司法人员侵犯律师执业权利1770件,同比上升84.8%。邀请律师参与公开听证、信访化解,专业法律服务备受好评。张青彬代表建议,深化检律良性互动要进一步强化法律共同体意识,把双赢多赢共赢理念继续深入落实到深化良性检律关系过程中。希望双方一起努力,共同履行好法定职责,更好维护社会公平正义。

  • 驻马店恢复客运时间(驻马店中心站已恢复31条汽车客运路线)

    3月20日起,驻马店部分县市已经恢复了客运班次。目前正阳、新蔡、平舆、汝南均已恢复县城往返驻马店市区的客运班次。

  • 阿富汗这个国家还有希望吗(看完这12个知识点)

    阿富汗的工资水平比较低,据央视报道,阿富汗人民的月平均工资为40美元,折合人民币262左右,约等于3200阿富汗尼。加上阿富汗原本耕地面积少,造成阿富汗一直连国内粮食供给都保证不了,需要依赖进口。根据教义,阿富汗男人可以娶4个妻子。说出来可能不信,阿富汗国内有足球联赛。2008年,阿富汗首都喀布尔大学孔子学院成立,为传播中国传统文化以及增进与阿富汗的文化交流做出了贡献。

  • 芍药的种植技术 芍药的种植技术与管理

    芍芽应随切随栽,如一时栽不完,可将芍芽贮藏到20厘米深的湿沙坑内。栽植浇水一般于8月下旬至9月栽植,宜早不宜晚,最迟不超过10月下旬,否则芍芽已发新根,会影响芍药的产量和质量。为出苗整齐,便于管理,应将芍芽按大小分级进行穴栽。夏季干旱时应中耕保墒;冬季结合中耕进行全面清园,以减轻病虫害。病虫害防治危害芍药的病虫害有灰霉病、锈病、软腐病、蛴螬、小地老虎等。

  • 唯品会如何删除退换货记录(唯品会怎么删除售后记录)

    唯品会删除退换货记录的方法如下:1、首先需要阅读退货政策,根据实际情况选择退货的原因,点击“提交退货申请”;2、提交退货申请成功后,系统会自动提示退货与退款的信息,如需修改可点击“取消退货”;3、自助退货申请成功后相关专业人员会在一小时内审核通过,查看状态为“退货已审核”即可将商品寄回唯品会办理退货;4、然后点击订单信息,长按删除即可。