[微信小程序]OpenID,UnionID,access_token之间的关系以及获取方式
什么是OpenID,UnionID,access_token?
OpenID是用户在小程序中的唯一标识。
UnionID是用户在微信开放平台上的唯一标识,包括小程序、公众号等,同一个用户的UnionID都是一样的。
access_token是后端调用微信接口用的。
分别如何获取?
1、获取OpenID
小程序调用wx.login
,会返回一个code
,将code
传给后端,后端调用微信的auth.code2Session
,就能获取到OpenID了。如果满足条件,也会返回UnionID,相关文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
2、获取UnionID
如果获取OpenID的时候没有获取到UnionID,就需要调用wx.getUserInfo
获取加密的用户数据,将数据传给后端,后端根据微信提供的解密方法,就能获取到UnionID了。
后端解密需要
session_key
,这是在获取OpenID时得到的
调用wx.getUserInfo需要用户授权,现在弹出授权窗口的方式,只能由用户主动点击
open-type="getUserInfo"
的button。
3、获取access_token
后端调用auth.getAccessToken
获取。