首页 > 其他分享 >什么是UnionId、OpenId与wxopenid?

什么是UnionId、OpenId与wxopenid?

时间:2024-04-20 19:34:44浏览次数:19  
标签:OpenId code UnionId 程序 用户 开发者 wxopenid

如果你对 UnionId、OpenId、wxopenid这三个概念傻傻分不清,那看这篇文章就对了。了解微信账户体系,能帮助你更好地做小程序设计。

01 概念解释

  1. 小程序OpenId
    OpenId 是一个用户对于一个小程序/公众号的标识,开发者可以通过这个标识识别出用户。类似 wxopenid,同一个人,使用不同的小程序,会留下不同的小程序 OpenId 。获取小程序 OpenId 无需用户操作和授权。

  2. UnionId
    UnionId 是一个用户对于同主体微信小程序/公众号/APP的标识,开发者需要在微信开放平台下绑定相同账号的主体。开发者可通过 UnionId,实现多个小程序、公众号、甚至APP 之间的数据互通。

正常情况下,微信生态中,UnionId 是用户身份的唯一标识,(如果业务涉及不同主体,不一定)。

所以,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionId 来区分用户的唯一性。

  1. 公众号OpenId(简称 wxopenid)
    同一个人,关注不同的公众号,会留下不同的wxopenid。大帐号、小帐号因为绑定在一起了,所以会是同一个wxopenid。

同一个用户,在同主体的小程序和公众号下,会有各自的 OpenId ,不相同,不能混用。

以上,所有 ID 均并不包含敏感信息,只是个普通的 ID。

02 唯一性说明
一个人,在同主体的小程序、公众号等下面只有 1 个 UnionId,有多个 wxopenid 和多个小程序OpenId 。
UnionId是同主体应用下唯一身份证,可以查询对应的wxopenid和小程序OpenId。因此,UnionId 的覆盖率是最高的。当用户关注公众号、逛公众号下面H5时,例如www.mspm.cn,可以同时获取 UnionId、wxopenid。而逛小程序时,可以同时获取小程序 UnionId、openid。不管逛哪都能拿到 UnionId。
在单个小程序或公众号里,OpenId 是唯一的。当同一个小程序主体下有多个小程序时,每个小程序有自己的 OpenId,因此需要 UnionId 进行唯一身份标识,即:UnionId 是同个主体下不同小程序的用户唯一标识;
03 获取方式

  1. wxopenid
    查看:获取设备及用户信息

  2. OpenId
    通过调用 wx.login() ,获取临时登录凭证凭证 code
    App({ onLaunch: function() { wx.login({ success: function(res) { if (res.code) { //发起网络请求 // code: 就是登录凭证(code) } } }); } })

App({
onLaunch: function() {
wx.login({
success: function(res) {
if (res.code) {
//发起网络请求
// code: 就是登录凭证(code)
}
}
});
}
})

前端获取到 code 后,将 code 传给后端,后端调用接口获取 session_key 和 OpenId ,接口如下:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

  1. UinionId
    前提条件:

微信开放平台帐号已完成开发者资质认证
微信开放平台绑定小程序
获取 UnionId 流程:

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

标签:OpenId,code,UnionId,程序,用户,开发者,wxopenid
From: https://www.cnblogs.com/mspm/p/18148030

相关文章

  • 公众号登录获取才code和openid,线上调试
    1.实现静默登录获取code,在method方法里面定义函数,在onLoad里面调用getCode方法getCode(){//静默授权console.log(111111111111)varlocal='http://kaifa4.xinglian.work/user/#/pages/login/index'//当前页面的地址va......
  • orchard core 开启openid 使用uniapp结合oidc-client 作为客户端连接
    官方的项目地址:https://github.com/onestar1/OrchardSkills.OrchardCore.OIDC.Vue.js/tree/main/OrchardSkills.OrchardCore.MaterialDesignTheme操作步骤:单独clonehttps://github.com/OrchardSkills/OrchardSkills.OrchardCore.MaterialDesignTheme1、打开Recipes目录下......
  • 微信小程序如何取得用户的openid
    在微信小程序中,可以通过调用微信提供的API来获取用户的openid。以下是获取用户openid的步骤:首先,在微信开放平台(https://open.weixin.qq.com/)上注册一个小程序,并获取到AppID和AppSecret。在小程序的app.js文件中,引入微信小程序的SDK:constwx=require('wx');在小程序......
  • 在企业微信中如何获取unionId?
    1.概念科普微信开放和公众平台的定位微信开放平台是为了让第三方应用投入微信的怀抱而设计的,比如第三方的移动应用(Android/IOS)、网站等;微信为了开疆拓土,扩大自己的影响力。微信公众平台是为了让程序员利用微信生态技术开发公众号、小程序而建立的,是一个技术提供平台;这才是......
  • getOpenId
     Page({/***页面的初始数据*/data:{showUploadTip:false,haveGetOpenId:false,envId:'',openId:''},onLoad(options){this.setData({envId:options.envId});},getOpenId(){w......
  • .NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
    背景随着公司微信相关业务场景的不断拓展,从最初的一个微信移动应用、然后发展成微信公众号应用、然后又有了微信小程序应用。但是随着应用的拓展,如何保证相同用户的微信用户在不同应用中登录的同一个账号呢?今天的主题就来了.NET微信网页开发之通过UnionID机制解决多应用用户帐号......
  • Abp vNext自定义OpenIddict登录
    AbpvNext自定义OpenIdDict登录使用AbpvNext6.0我是打算给登录加一个验证码或者手机登录什么的,所以要自定义登录这方面官方文档写的不多,所以只能翻源码了源码分析首先就是去翻登录的api,用abp官方的angularDemo来看登录的路由,有三个网络请求/.well-known/openid-configurat......
  • 微信支付:wxpay.unifiedOrder(data)返回appid 与 openId 不配
    原因:小程序和APP、公众号等支付方式夸端口调用支付,后台配置多个appId时A程序中的openid在B程序中支付。即使用A程序的openid和B程序的appIdy去调用wxpay.unifiedOrder(data)把请求统一支付的参数输出:得到当前的appid,微信返回后看到另一个Appid,如果两个一致,则不会出现不匹配问题......
  • 微信小程序-获取openid
    当需要获取当前用户的微信openid时,需要调用微信提供的接口进行获取,这里以从后端获取为例进行说明。1.小程序代码ts(之前叫js):Page({data:{info:'hello'},clickMe:function(){wx.login({success(res){if(res.code){/......
  • 只有三行代码的神奇云函数的功能之三:100%成功获取unionid [纯转]
    微信小程序这是一个神奇的网站,哦不,神奇的云函数,它只有三行代码:(真的只有三行哦)云函数:loginindex.js:constcloud=require('wx-server-sdk')cloud.init()exports.main=async(event)=>{return{...event,...cloud.getWXContext()}} 神奇功能之三:100%成功获取unio......