用户微信登录小程序有两种情况,分别为弹出登录提示和不弹出登录提示两种。弹出登录提示的情况下,用户确定后会向后台传入更多参数,例如用户昵称等。不弹出登录提示只能获取到用户的临时登录凭证code。主要根据第二种情况进行描述。
这个code具有时效性,能用于区别用户,需要从小程序前端传到开发者服务器后端,再从后端传到微信服务器进行核验,来获取用户唯一标识openid和会话密钥 session_key。
对于小程序前端,所需要做的只有通过wx.login获取到code,并通过wx.request将code发送给开发者服务器。
官方文档流程图如下:
代码如下:
onLoad: function () {// 获取用户openidlet that = thiswx.login({success: function (res) { //请求自己后台获取用户openidconsole.log(res.code)wx.request({url: '开发者后台接口',data: {appid: '自己的微信公众号获取',secret: '自己的微信公众号获取',code: res.code},success: function (response) {var openid = response.data.openid;console.log('请求获取openid:' + openid); //可以把openid存到本地,方便以后调用wx.setStorageSync('openid', openid);that.setData({openid: "获取到的openid:" + openid})}})}})
将该请求写在了onload生命周期函数内部,可以在界面打开时即调用获取到用户的openid。