聊聊微信小程序开发中的appid、openid、unionid

时间:2024-03-31 18:38:12


最近在开发中涉及到了与小程序的交互需求,所以自己想梳理一下这儿的关系,本文主要讲解appid、openid、unionid的定义、获取途径、以及用途。

appid

定义

小程序唯一凭证,即 AppID,每个小程序都有自己的一个appid

获取途径

可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态)

用途

小程序的 AppID 相当于小程序平台的一个身份证,会在很多场景中使用,比如小程序的登录、授权等

openid

定义

用户在同一个小程序下的唯一表示,即同一个用户在不同的小程序下的openid是不同的

获取途径

调用 auth.code2Session 接口,通过code(登录凭证,调用wx.login获取)+appid+appsecret(小程序**,获取方式和appid一样)可以换取openid

用途

用于在开发者系统中标识用户信息

unionid

定义

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。

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

标识同一个微信开放平台下的用户,可用于去重判断

小程序登录流程

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
以下是小程序登录的时序图:
聊聊微信小程序开发中的appid、openid、unionid以上流程可以简单地理解为,小程序和开发者都给了微信平台自己的凭证,由微信平台去建立二者间的关系,并将绑定结果返还给开发者,那以后的业务就直接由开发者处理。微信平台只是起到了牵线搭桥的作用。但是如果涉及到微信的核心业务,还是需要开发者去请求微信提供的api,比如微信支付。