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

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

作者: 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