微信小程序开发-用户相关

758 阅读3分钟

基础概念

  • UnionID 用于标识用户身份的标识,例如区分在微信小程序和微信h5端登录的两个账号是否为同一个用户
  • appid 小程序 AppID 或第三方平台 AppID。如果有提供 project,该选项将忽略
  • appsecret 小程序密钥
  • session_key 用于保证数据安全完整性,存储在开发者服务器上的会话密钥,调用wx.login会导致上次session_key过期
  • openid 支付用户唯一标识

授权

  • 部分接口需要用户授权才能调用
  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。
  • 校开发者可以使用 wx.getSetting 获取用户当前的授权状态。

提前发起授权

1616392432726.jpg

拒绝授权情况兼容

  • 调用 wx.openSetting 打开设置界面,引导用户开启授权
  • 如果上述情况点击拒绝,则会有如下效果:

opensetting2.jpg

授权有效期

  • 一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。

版本兼容

  • wx.canIUse(string schema)判断小程序的API,回调,参数,组件等是否在当前版本可用

登录

  • wx.login() 获取code,发送至后端服务器

  • 后段服务器拿到前端的code,将

    {code, appid, appsecret, ...}
    

    发送给微信接口服务

  • 微信接口服务返回

    {session_key, openid,...}
    

    后端把token返回给前端

  • 前端将token保存到小程序storage,在下次业务请求时带上token进行请求

登录状态检查

  • wx.checkSession

用户信息

获取用户信息

  • wx.getUserProfile 每次调用都会弹出授权信息(推荐使用)。目前(2021.3.20)小程序开发者工具不支持,需要真机调试
  • wx.getUserInfo 获取用户信息。为优化用户登录体验,该接口将进行调整,详见 用户信息接口调整说明
    • 触发方式
      <button wx:elif="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
      

获取手机号

  • 获取微信用户绑定的手机号,需先调用wx.login接口
  • 触发方式,主动触发

分享

转发与分享到朋友圈

  • onShareAppMessage(Object object) 转发。只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮
    onShareAppMessage() {
      // res {from, target, webViewUrl}
      if (res.from === 'button') {
        // 来自页面内转发按钮
        console.log(res.target)
      }
      return {
        title: '自定义转发标题',
        path: '/page/user?id=123',
        imageUrl: 'https://images.pexels.com/photos/247431/pexels-photo-247431.jpeg?cs=srgb&dl=pexels-pixabay-247431.jpg&fm=jpg',
      }
    }
    
  • onShareTimeline() 分享到朋友圈。只有定义了此事件处理函数,右上角菜单才会显示“分享到朋友圈”按钮。需要先设置onShareAppMessage才能生效。
    onShareTimeline() {
        return {
          title: '分享到朋友圈',
          query: 'a=1&b=2',
          imageUrl: 'https://images.pexels.com/photos/247431/pexels-photo-247431.jpeg?cs=srgb&dl=pexels-pixabay-247431.jpg&fm=jpg',
        }
      }
    

获取二次转发信息

  • 现在通过调用 wx.showShareMenu 并且设置 withShareTicket 为 true ,当用户将小程序转发到任一群聊之后,此转发卡片在群聊中被其他用户打开时,可以在 App.onLaunch 或 App.onShow 获取到一个 shareTicket。通过调用 wx.getShareInfo 接口传入此 shareTicket 可以获取到转发信息。