小程序完整授权逻辑

  • 小程序完整授权逻辑 (防止用户手动修改授权设置与取消授权补救方法)
  • scope 列表open in new window
  • wx.authorize 授权需要用户主动发起,无法直接弹窗

通用授权 (除用户授权以外)

wx.getSetting({
  success: (res) => {
    // scope 信息可参考 scope 列表
    if (!res.authSetting["scope.userLocation"]) {
      //地理位置
      wx.authorize({
        scope: "scope.userLocation",
        success: () => {
          // 执行方法
        },
        fail: () => {
          wx.showModal({
            title: "提示",
            content: "授权提示语",
            showCancel: false,
            success: (sss) => {
              if (sss.confirm) {
                //跳转去设置
                wx.openSetting();
              }
            },
          });
        },
      });
    } else {
      // 已授权
      // 执行方法
    }
  },
});

用户信息授权

  • wx.getUserInfo 方法获取用户信息,必须是在用户已经授权的情况下调用
wx.getSetting({
  success: (res) => {
    if (res.authSetting["scope.userInfo"]) {
      // 已经授权,可以直接调用 getUserInfo 获取头像昵称
      // 必须是在用户已经授权的情况下调用
      wx.getUserInfo({
        success: (sss) => {
          // encryptedData、iv 为用户加密数据,可交由后端解析出用户的详细数据
          console.log(sss.userInfo);
        },
      });
    }
  },
});
  • button 获取用户信息
<button open-type="getUserInfo" bindgetuserinfo="getAuth" class="btn-wrap">
  授权
</button>
getAuth(e) {
    let { detail } = e
    // encryptedData、iv 为用户加密数据,可交由后端解析出用户的详细数据
    // detail['encryptedData']
    // detail['iv']
}

encryptedData、iv 敏感数据解析后的 json 数据

{
  "openId": "OPENID",
  "nickName": "NICKNAME",
  "gender": GENDER,
  "city": "CITY",
  "province": "PROVINCE",
  "country": "COUNTRY",
  "avatarUrl": "AVATARURL",
  "unionId": "UNIONID",
  "watermark": {
    "appid": "APPID",
    "timestamp": TIMESTAMP
  }
}
上次更新 2026/6/23 11:49:15
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8