微信小程序-授权

摆上官方给出授权流程图

对官方流程图理解:

2021-04-06-22-30-34

步骤:

1、首先我们通过微信中 wx.login()方法 获取 临时登录凭证code (有效期只有5分钟),并通过wx.request()提交code给开发者服务器。

2、开发者服务器把code和appid回传到微信方服务器,来获取session_key & openid;

注意:session_key是微信服务器生成的针对用户数据进行加密签名的密钥,不应该进行传输到客户端,所以通过生成3rd_session(它就是一个key,把session_key+openid存为value)

//授权弹框
function onlogin() {
  wx.login({
    success(res) {
      if (res.code) {
        //发起网络请求
        http.GetDataInfo('wxauth/getsessionkey', 'get', {
          appid: app.data.AppID,
          code: res.code
        }, function(result) {
          if (result.data.code == 10000) {
            //获取用户信息
            getUserInfos(result.data.data);
          } else {
            wx.showToast({
              icon: 'none',
              title: '获取微信用户信息失败',
              duration: 1000
            })
          }
        });

      } else {
        wx.showToast({
          icon: 'none',
          title: '登录失败!',
          duration: 1000
        })
      }
    }
  })
};

2、接着我们通过微信中wx.getUserInfo()方法获取如下信息,把session_key、encryptedData和iv传给后台服务器,来获取用户token等信息

//获取用户信息
function getUserInfos(uuid) {
  wx.getUserInfo({
    success: function(res) {
      var encryptedData = res.encryptedData;
      var iv = res.iv;
      app.globalData.userInfo = res.userInfo;
      http.GetDataInfo('wxauth/wxsmallusersave', 'post', {
        appid: app.data.AppID,
        uuid: uuid,
        type: 'userinfo',
        encryptedData: encryptedData,
        iv: iv
      }, function(result) {
        if (result.data.code == 10000) {
          wx.setStorageSync('token', result.data.data.token);
        } else {
          wx.showToast({
            icon: 'none',
            title: '获取token失败',
            duration: 1000
          })
        }
      });
    }
  })
};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

To-strive

你的鼓励是我创作的最大鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值