授权与登录是两个行为,授权是为了提供更多的功能(平台限制一些api只能授权后使用),登录是为了确定当前是哪个用户
登录流程
所谓登录就是确定当前是哪个用户
在微信小程序中就是从微信官方获取用户的唯一标识 openid
(当前应用)和unionid
(当前微信开放平台账号) 然后通过 openid
或unionid
绑定用户的过程
-
在小程序端调用
wx.login()
,成功时可获得临时登录凭证code ,返回结果如下{code: "031mRf000Xa8sL1Z5k000WVDxo4mRf0o", errMsg: "login:ok"}
-
在小程序端把
code
传给后台 -
后台调用
auth.code2Session
接口,用前端传来的临时登录凭证code换取openid
和会话秘钥session_key
-
进行到这一步时后台已经得到了用户的唯一标识,也就代表能确定当前是哪个用户
openid 和 unionid 的区别
- 只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的
unionid
是唯一的 - 同一个微信开放平台帐号 下的不同应用
openid
是不同的
获取用户授权
第一次调整,微信小程序官方文档:小程序与小游戏获取用户信息接口调整
第二次调整,微信小程序官方文档:小程序登录、用户信息相关接口调整说明
第二次调整前,该方法2021-4-13后只能获取匿名信息
- 用一个按钮设置
open-type
为getUserInfo
- 按钮绑定
getuserinfo
事件来接收获取到的用户信息
<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">用户授权</button>
第二次调整后
- 直接调用
wx.getUserInfo()
获取,必填参数为desc
,表述获取用户信息的用途,未来会显示在授权窗口
wx.getUserInfo({
desc: '获取用户信息'
})
人事一点不干。。。