结论:同一用户,对同一个微信开放平台下的不同应用,unionid是相同的
用处:用unionID关联同一个微信开放平台帐号下移动应用openID、网站应用openID和公众帐号(包括小程序)openID,维护自己的用户
获取unionID的4种方式:
1、调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
2、如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
3、如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
4、小程序端调用云函数时,当满足 UnionID 获取条件时可在云函数中通过 cloud.getWXContext 获取 UnionID
参考:UnionID 机制说明
以小程序里面为例,上图:
服务器常用的API:
code2Session ,参数appid、secret、js_code、grant_type='authorization_code',请求地址:
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
下发小程序和公众号统一的服务消息,参数access_token、openid、mp_template_msg,请求地址:
POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN
access_token,参数grant_type=client_credential、appid、secret,请求地址:
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET