【小程序】微信小程序授权登录

2021/09/09 14:53:53

授权与登录之间没有必然的联系,授权是为了提供更多的功能(平台限制一些 api 只能授权后使用),登录是为了确定当前是哪个用户

登录流程

所谓登录就是确定当前是哪个用户

在微信小程序中就是从微信官方获取用户的唯一标识 openid(当前应用)和unionid(当前微信开放平台账号) 然后通过 openidunionid 绑定用户的过程

  1. 在小程序端调用 wx.login() ,成功时可获得临时登录凭证 code ,返回结果如下

    {code: "031mRf000Xa8sL1Z5k000WVDxo4mRf0o",
    errMsg: "login:ok"}
    
  2. 在小程序端把 code 传给后台

  3. 后台调用 auth.code2Session 接口,用前端传来的临时登录凭证 code换取 openid和会话秘钥 session_key

  4. 进行到这一步时后台已经得到了用户的唯一标识,也就代表能确定当前是哪个用户

openid 和 unionid 的区别

  1. 只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 unionid 是唯一的
  2. 同一个微信开放平台帐号 下的不同应用 openid 是不同的

获取用户授权

第一次调整,微信小程序官方文档:小程序与小游戏获取用户信息接口调整open in new window

第二次调整,微信小程序官方文档:小程序登录、用户信息相关接口调整说明open in new window

第二次调整前,该方法 2021-4-13 后只能获取匿名信息

  1. 用一个按钮设置 open-typegetUserInfo
  2. 按钮绑定 getuserinfo 事件来接收获取到的用户信息
<button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">
  用户授权
</button>

第二次调整后

  1. 直接调用 wx.getUserInfo() 获取,必填参数为desc,表述获取用户信息的用途,未来会显示在授权窗口
wx.getUserInfo({
  desc: "获取用户信息",
});

人事一点不干。。。