微信小程序中针对微信基础库新旧不同版本获取用户手机号的方法

时间:2024-03-05 19:46:23

大家好我是咕噜美乐蒂,很高兴又和大家见面了!

在微信小程序中,针对微信基础库新旧不同版本,获取用户手机号的方法略有不同。我将分别介绍新旧版本的获取用户手机号方法:

新版本(基础库 2.10.0 及以上)

1. 需要用户授权

步骤:用户首次点击获取手机号的按钮时,系统会弹出授权窗口,用户需要确认授权才能获取手机号。

代码示例:

javascript

wx.login({

  success: (res) => {

    if (res.code) {

      wx.request({

        url: 'https://api.weixin.qq.com/sns/jscode2session',

        data: {

          js_code: res.code,

          grant_type: 'authorization_code'

        },

        success: (res) => {

          let openid = res.data.openid;

          let sessionKey = res.data.session_key;

          // 这里可以根据后台返回的数据再进行相应的操作

        }

      });

    } else {

      console.log('登录失败!' + res.errMsg);

    }

  }

});

2. 解密手机号

代码示例:

javascript

wx.getUserInfo({

  success: (res) => {

    wx.request({

      url: 'https://yourdomain.com/decryptPhone',

      method: 'POST',

      data: {

        encryptedData: res.encryptedData,

        iv: res.iv,

        sessionKey: sessionKey  // 上一步获取的 sessionKey

      },

      success: (res) => {

        console.log(res.data.phoneNumber);

      }

    });

  }

});

旧版本(基础库低于 2.10.0)

1. 官方接口获取手机号

代码示例:

javascript

wx.getPhoneNumber({

  success: (res) => {

    console.log(res.detail.encryptedData);  // 获取加密信息

    console.log(res.detail.iv);  // 获取加密算法的初始向量

  }

});

2. 解密手机号

代码示例:

javascript

wx.request({

  url: 'https://yourdomain.com/decryptPhone',

  method: 'POST',

  data: {

    encryptedData: res.detail.encryptedData,

    iv: res.detail.iv,

    sessionKey: sessionKey  // 旧版本需提前获取 sessionKey

  },

  success: (res) => {

    console.log(res.data.phoneNumber);

  }

});

注意事项

在获取用户手机号之前,需要先获取用户的登录凭证 code,再通过解密算法获取手机号。

后端服务器需配合前端进行解密,具体解密算法可参考微信官方文档提供的示例代码。

以上是针对微信小程序中新旧版本获取用户手机号的方法,具体实现方式可能根据项目需求和后端逻辑有所不同。如果您有任何进一步的问题或需要更多帮助,请随时告诉我。