微信的openID、unionID等总结

结论:同一用户,对同一个微信开放平台下的不同应用,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 机制说明


以小程序里面为例,上图:

小程序中openID、unionID、session_key获取逻辑

服务器常用的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

你可能感兴趣的:(微信的openID、unionID等总结)