使用云函数获取openid
目前openid可以由小程序端获取也可以由云函数端获取
x1从小程序端获取openid
小程序端获取方式比较复杂,并不是直接获取openid,而是要通过凭证向后端请求,由后端来获取
-
步骤
- 小程序调用wx.login,能够获取一个code凭证。这个凭证有一个很短的有效期,且再次登录会替换
- 将获取的code发送到微信官方的接口url(url后面的参数中,大写的值替换成你实际的appid、appsecret、login给的code)
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=APPSECRET&js_code=CODE&grant_type=authorization_code- 接收对方的res,res中提供了各种用户相关的信息
-
问题
- 目前小程序似乎不允许把上述接口添加为小程序能够访问的合法域名,所以需要一个服务器来完成请求操作
- 获取的数据是加密的,需要用相应算法解密。解密方法详见官方文档
x2 从云函数获取用户openid
云函数中的cloud.getWXContext()可以直接获取用户的openid,不需要复杂的验证来远程获取
- 步骤
- 配置好云函数后,在小程序需要openid的页面发起请求(我这里使用了tcb-router来处理请求)
- 云函数中通过cloud.getWXContext()获取openid,传回给前端
- 小程序接收,获取成功
补充:获取unionid
-
unionid是微信官方为同一主体不同小程序或公众号设计的统一标识符,而openid在不同的应用上是不同的
-
获取
- 获取方式同上面openid获取。不过公众号似乎只能用类似小程序端的方式发送code来获取
- 实际上发送code获取的数据包里本身就包含openid和unionid
- 小程序云函数也是通过cloud.getWXContext()来获取,可以通过
{UNIONID,OPENID}的方式把两种标识都解构出来