获取微信用户登录权限
微信小程序获取用户信息,可以用微信提供的getUserInfo接口实现,但是这个接口只能返回用户的昵称、头像等基本信息,用户的openID和sessionID以及用户的手机号等信息都不能用这个来得到,这些都需要获得用户的登录权限才能获取。
1、使用wx.login接口获取用户登录凭证的code,因为这些涉及到用户的隐私,所有这个code需要我们处理
2、自己封装一个接口去请求微信官方给的链接(链接地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
),由于微信对接口服务器有限制,所以必须要自己封装这个接口,
接口的函数微信小程序的公众平台上有示例。链接地址为:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
3、用获取的code请求自己的接口,从而获取用户的openId
4、通过 wx.login()
获取到用户登录态之后,需要维护登录态。开发者要注意不应该直接把 session_key、openid 等字段作为用户的标识或者 session 的标识,而应该自己派发一个 session 登录态(请参考登录时序图)。对于开发者自己生成的 session,应该保证其安全性且不应该设置较长的过期时间。session 派发到小程序客户端之后,可将其存储在 storage ,用于后续通信使用。
用户授权
在微信小程序中,我们用到的很多都需要设备都需要用户授权,才能得到相关信息,比如微信运动、打开蓝牙等,这些我们都要在程序前加上用户授权操作。使用方法如下,这里的scope参数可以换成你需要用到权限,调用wx.authorize会弹出弹框询问用户是否授权。
wx.getSetting({ success(res) { if (!res.authSetting[‘scope.record‘]) { wx.authorize({ scope: ‘scope.record‘, success() { // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问 wx.startRecord() } }) } } })