前端微信小程序怎么调微信登录的接口

 前端代码

handleWechatLogin() {
    // 处理微信登录逻辑
    wx.login({
      success: function (res) {
        if (res.code) {
          var code = res.code;
          // 发送 code 到后端服务器进行进一步的处理
          // 在这里可以调用后端接口,将 code 发送到后端服务器
          api.Wechatlogin({
            code: code,
          }).then(res => {
            console.log(res);
            // 假设你已经获取到了 encryptedData 和 iv
            const encryptedData = res.result.openid; // 加密的用户信息
            const iv = res.result.session_Key; // 解密算法的初始向量
            // const sessionKey = 'FkkvpLu4HGiQXjU+4VMv2Q=='; // 后端返回的 session_key

            // 调用微信解密函数解密用户信息
            wx.getUserInfo({
              encryptedData: encryptedData,
              iv: iv,
              success: function (res) {
                console.log('解密后的用户信息:', res);
                // 将用户的头像和昵称保存在小程序的全局数据中
                getApp().globalData.avatarUrl = res.userInfo.avatarUrl;
                getApp().globalData.nickName = res.userInfo.nickName;
                // 在这里可以处理解密后的用户信息,比如将用户昵称、头像等显示在页面上
              },
              fail: function (err) {
                console.error('解密失败:', err);
              }
            });

          }).catch(err => {})
        } else {
          console.log('登录失败!' + res.errMsg);
        }
      },
      fail: function () {
        console.log('登录失败!');
      }
    });
  },

1.首先调用微信的接口wx.login,获取到微信给的code。

2.然后将这个code 发送到后端服务器进行进一步的处理。(基本是用不到这段代码的,直接传到后端的接口里就行了,后端在进行处理)。

nodejs代码(也就是接口代码)

// 处理微信登录接口
router.post('/wechatlogin', (req, res) => {
  const { code } = req.body;
  const appid = 'wxe14e3281ee3f2b42';
  const appsecret = 'c02dd1aba0a0ba733d4ec04313a90e97';

  // 发送请求到微信接口
  const wxLoginUrl = 'https://api.weixin.qq.com/sns/jscode2session';
  const wxLoginParams = {
    appid,
    secret: appsecret,
    js_code: code,
    grant_type: 'authorization_code'
  };

  axios.get(wxLoginUrl, { params: wxLoginParams })
    .then((response) => {
      // 从微信接口响应中提取用户身份信息
      const { openid, session_key } = response.data;
      console.log( response.data);
      // 创建新的 WechatloginModel 实例并保存到数据库
      const wechatlogin = new WechatloginModel({
        code,
        openid,
        session_key
      });

      return wechatlogin.save();
    })
    .then((data) => {
      res.json({
        code: 200,
        message: '保存成功',
        result: data
      });
    })
    .catch((error) => {
      console.error('保存失败:', error);
      res.status(500).json({
        code: 500,
        message: '保存失败',
        error: error.message
      });
    });
});

 3.后端在拿到这个code之后,需要去微信公众平台(https://mp.weixin.qq.com/)

,去注册,拿到开发者ID」和「开发者密码」(AppID和AppSecret),将code还有AppID和AppSecret一起发送到微信的接口https://api.weixin.qq.com/sns/jscode2session中,获取到

openid和session_key。

4.后端然后再将openid和session_key返回给前端,前端通过调用微信解密函数( wx.getUserInfo)解密用户信息,在解密后的用户信息中,可以获取到用户的一些基本信息(头像,用户名,性别等)。

5.如果需要调微信的授权页面,调一个微信小程序自带的api就够了(wx.authorize)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值