目录

小程序登陆授权的两种方式

目录

小程序登陆授权的两种方式

1、小程序授权登录流程

调用 wx.login 获取 code。

使用 wx.getSetting 获取用户的授权情况

如果用户已经授权,直接调用 API wx.getUserInfo 获取用户最新的信息;

用户未授权,在界面中显示一个按钮提示用户登入,当用户点击并授权后就获取到用户的最新信息。

将获取到的用户数据连同wx.login返回的code一同传给后端

2、手机号登陆授权

1.页面使用

<button class="login-btn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">授权登陆</button>

2.js中

getPhoneNumber(e) {
    let _this = this;
    //console.log(e.detail)
    if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
      wx.showModal({
        title: '提示',
        showCancel: false,
        content: '未授权不能操作',
        success: function (res) {
        }
      })
    }else{
      // 执行微信登录
      wx.login({
        success: function (res) {
          console.log(res)
          // 发送用户信息
          App._post_form('user/login'
            , {
              code: res.code,
              user_info: e.detail.rawData,
              encrypted_data: e.detail.encryptedData,
              iv: e.detail.iv,
              signature: e.detail.signature,
              pid: _this.data.pid
            }
            , function (result) {
              // 记录token user_id
              wx.setStorageSync('token', result.data.token);
              wx.setStorageSync('user_id', result.data.user_id);
              // 跳转回原页面
              _this.navigateBack();
            }
            , false
            , function () {
              wx.hideLoading();
            });
        }
      });
    }
  }

3.后台根据code获取session_key和openid_id ,将open_id存入session

4.根据session_key,app_id,encrypted_data,iv解密手机号

5.token 生成

根据open_id+盐生成token返回给前端,前端每次请求携带

6.用户信息查询