首先要明白一件事,小程序中的登录和授权其实是两个操作。
登录的意义就是让web服务器知道当前的用户是谁,传统的web应用中用户通过输入账号和密码实现登录,而小程序中对应的是openId(当前用户对应的唯一标识)。
每个用户相对于每个微信应用(公众号或者小程序)的openId 是唯一的,也就是说一个用户相对于不同的微信应用会存在不同的openId.
小程序中的授权分为很多种,使用摄像头、录音功能、用户信息等等,大多数情况下通过官方提供给的wx.authorize()就可以获取对应的授权(弹出微信授权的对话框,用户允许之后即可获得),但今天要说的用户信息授权,在小程序一系列改版之后,则需要通过其他方式获得。
下面是前端代码实现思路。
- 调用wx.login()方法获取code(登录凭证),然后发送给后台,后台就可以通过code2Session向微信服务器请求到openid和session_key。
mounted (){
wx.login({
success (res) {
if (res.code){
// 这里可以把code传给后台,后台用此获取openid及session_key
}
},
})
}
- 只获取到用户的openid意义并不大,我们还需要用户的昵称、头像等个人基本信息,获取这些是需要用户授权的。大多数情况下我们通过调用wx.authorize()就可以向用户发起某种授权请求,也就是弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据。
例如想调用设备的录音功能: