前言
小程序的登录主要是获取用户信息,识别用户身份等用途;
有些就是一进入就登录,不需要做什么操作,有的是通过用户授权才会进行登录,终究还是根据产品需求来定;
openid 和 unionid
小程序中通过openid和unionid来识别用户的身份,在同一个小程序中openid是唯一的,不同手机登录也是通过openid进行,
而unionid 也作为微信的唯一身份标识符,它用于多个微信授权的平台,例如 公众号、h5、pc端等 通过unionid来作为标识,获取实时性的身份及数据,当然需要用户进行登录或注册通过绑定手机号等,将unionid和手机号进行关联来确实为同一个用户,就可以实现多平台共享;
授权登录的方式:
账号密码手机号邮箱第三方
小程序登录的流程
登录过程主要涉及到 小程序、服务端、微信服务端
小程序的登录会在用户一进入就调用 wx.login 获取到一个临时的 code,将获取的的 code 传递给后端服务器,这就是前端该干的事情;
wx.login({
success: res => {console.log(res.code)},
fail: err => {console.log(err)}
})
后端服务器获取到code时,再从服务器通过auth.code2Session 向微信的服务器发送网络请求并携带 code + appid + appsecret;
微信开发平台 中查看 appid + appsecret;
待微信服务端响应 openid + session_key(session_key主要用于再向微信服务器发起请求用到, session_key生成access_token向微信服务器发送请求),openid是不会直接传到小程序中的,而是需要在后端将 openid + session_key 等信息转换生成自定义的token(自定义登录态)返回给小程序,而小程序获取到token则进行登录,获取业务数据方面的操作;
获取用户信息
wx.getUserInfo()在早期使用wx.getUserInfo进行获取,但由于一进入页面就立马弹出获取用户的弹窗,用户体验不行,且拒绝授权人数多。而且得到的数据基本都是默认匿名数据;
wx.getUserProfile()现在则使用wx.getUserProfile授权,需要用户手动点击授权才会出现弹窗;
<button open-type="getUserInfo" bindtap="handleGetUser">获取用户信息</button>
handleGetUser:function(){
wx.getUserProfile({
desc: '描述',
success: (res) => { console.log(res) },
fail: (err) => {console.log(err) }
})
}
关于wx.getUserInfo()--> wx.getUserProfile()调整 小程序登录、用户信息相关接口调整说明 | 微信开放社区 (qq.com)