微信账户体系扫盲

2020-04-21 10:27:48 浏览数 (1)

微信账户体系知识分享

  • UnionId
  • wxopenid(公众号OpenId)
  • OpenId
  • 唯一性
  • 获取方式

# UnionId

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

正常情况 UnionId 是用户身份的唯一标识(业务涉及不同主体,不一定) 如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionId 来区分用户的唯一性

# wxopenid(公众号OpenId)

  • 同一个人,关注不同的公众号,会留下不同的wxopenid。大帐号、小帐号因为绑定在一起了,所以会是同一个wxopenid
  • 同一个用户,在同主体的小程序和公众号下,会有各自的 OpenId ,不相同,不能混用 以上所有ID均并不包含敏感信息,仅是普通的ID

# OpenId

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

# 唯一性

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

# 获取方式

wxopenid

  • 查看:获取设备及用户信息

OpenId

  • 调用 wx.login ,获取临时登录凭证凭证 code
  • 将 code 传给后端,后端调用接口获取 session_key 和 OpenId
代码语言:javascript复制
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

UnionId

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

0 人点赞