美文网首页工作实践经验
微信小程序获取用户手机号

微信小程序获取用户手机号

作者: ConFront_C_Eng | 来源:发表于2020-02-25 10:21 被阅读0次

1.第一步获取 code,通过登录方法

在app.js文件中通过登录方法设置全局的code

     // 登录
    wx.login({
      success: res => {
        // console.log('login=',res)
        // debugger
        getApp().globalData.code=res.code
      }
    });

2.第二步点击获取手机号的button,绑定获取手机微信能力open-type="getPhoneNumber"

<van-button custom-class="phone" size="small" round plain hairline open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</van-button>
var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js') 
const app = getApp();

getPhoneNumber: function (e) {
    // console.log('getPhoneNumber=>res=',e)
    var that = this;
    if (!e.detail.errMsg || e.detail.errMsg != "getPhoneNumber:ok") {
      wx.showModal({
        content: '不能获取手机号码',
      })
      return;
    }
    wx.showLoading({
      title: '获取手机号中...',
    })

    // Toast(app.globalData.sessionCode);
    wx.request({
      url: urlPrefix + 'index/getSessionKey.html', // 仅为示例,并非真实的接口地址
      data: app.globalData.sessionCode,
      method: 'POST',
      header: {
        'content-type': 'application/json' // 默认值
      },
      success(res) {
        // Toast(res.data.data.session_key);
        // console.log(res.data)
        // debugger
        if (res.data.success) {
          // console.log('session_key=',res.data.data.session_key)
          // console.log('openid=',res.data.data.openid)
          // 下面解密过程所需要的包文章末尾获取
          const pc = new WXBizDataCrypt(res.data.data.appid, res.data.data.session_key)  // -解密第一步
          const data = pc.decryptData(e.detail.encryptedData, e.detail.iv)   // 解密第二步
          console.log('phoneNumber=',data.phoneNumber)
         //  获取到手机号处理业务逻辑
          wx.hideLoading()   
        }
      }
    })
  },

3.第三步 请求的后台数据,需要前端小程序传入code然后请求微信接口获取到session_key,然后返回小程序使用

private static String session_key = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code";

public Map<String, String>  getSessionKey(String code){
        Map<String,String> map = new HashMap<String,String>();
        try {
            String appid = appIdMin;
            String appsecret = appSecretMin;
            // 发起GET请求获取凭证
            String session_key = StringUrl.session_key.replace("APPID", appid).replace("SECRET",
                    appsecret).replace("JSCODE", code);
            JSONObject jsonObject = httpsRequest(session_key, "GET", null);

            if(jsonObject.getString("session_key") != null){
                try {
                    map.put("session_key",jsonObject.getString("session_key"));
                    map.put("openid",jsonObject.getString("openid"));
                    map.put("appid",appid);
                    System.out.println("【session_key】" + jsonObject.getString("session_key"));
                } catch(Exception e){
                    e.printStackTrace();
                }
            }
            else{
                logger.info("获取session_key失败"+jsonObject.toString());
            }
        }
        catch (Exception e){
            logger.info("获取session_key失败"+e.getMessage());
        }
        return map;
    }

目录结构


微信图片_20200225100415.png

特别感谢解密包出处转载自:https://www.jianshu.com/p/9651cc121afe

本篇文章目的: 记录工作中遇到的问题,方便快速查询使用

如果文章有什么不妥的地方,感谢留言,相互学习!

转载请注明出处,如有不同见解,欢迎私信或者留言讨论,谢谢!!!

相关文章

网友评论

    本文标题:微信小程序获取用户手机号

    本文链接:https://www.haomeiwen.com/subject/vdrzqhtx.html