• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 小程序开发实践之浅析如何获取手机号码

小程序开发实践之浅析如何获取手机号码

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了小程序开发,小程序获取手机号码等相关知识,希望对您有所帮助

小程序如何获取用户手机号码?下面本篇文章给大家介绍一下微信小程序开发中获取用户手机号码的方法,希望对大家有所帮助!


小程序开发实践之浅析如何获取手机号码


1、背景

在平时使用第三方微信小程序时,经常会有需要获取微信手机号码的情况,如下图所示:


小程序开发实践之浅析如何获取手机号码


那这种是怎样实现的呢?下面记录下获取微信手机号码的方法。

**备注:**需要有一个微信小程序号,并且这个号是经过企业认证的。(获取手机号码的功能不对个人小程序号生效)

那下面我们就一起开始,获取手机号码的编程之旅了。

2、代码实现

2.1 新建工程

在app.json文件中新增 "pages/getphonenumber/getphonenumber", 如下图所示:


小程序开发实践之浅析如何获取手机号码


2.2 准备密文解析工具类

通过微信小程序提供的接口获取手机号码,返回的数据是加密的,所以需要对返回的加密数据进行解密。


1) 新建终端

在微信开发者工具中,点击 "终端" -》 “新建终端” 如下图所示:


小程序开发实践之浅析如何获取手机号码


2) 执行 npm init 指令

//执行npm init后需要你输入一些信息,直接一直点击 “回车”键就好

如下图所示:


小程序开发实践之浅析如何获取手机号码


3) 依次执行 npm install crypto-js --save 、 npm install js-base64 --save

如下图所示:


小程序开发实践之浅析如何获取手机号码


4)构建npm

在微信开发工具的菜单栏 选择 “工具” -》 “构建npm” 构建完成即可。


2.3 解析类实现

在工程的utils文件夹下新建 WXBizDataCrypt.js文件,代码实现如下所示:

var CryptoJS = require("crypto-js");var Base64 = require("js-base64"); //解析加密数据function decode(sesionKey,iv,data) {  var key = CryptoJS.enc.Base64.parse(sesionKey);  var iv = CryptoJS.enc.Base64.parse(iv);  var decrypt = CryptoJS.AES.decrypt(data, key, {    iv: iv,    mode: CryptoJS.mode.CBC,    padding: CryptoJS.pad.Pkcs7  });  return Base64.decode(CryptoJS.enc.Base64.stringify(decrypt));} module.exports = {  decode}


2.4 获取手机号码代码实现

2.4.1 getphonenumber.js的实现

注意: appId、secret需要替换为自己小程序的

// pages/getphonenumber/getphonenumber.jsconst WXBizDataCrypt = require('../../utils/WXBizDataCrypt'); Page({   /**   * 页面的初始数据   */  data: {    phoneNum:'',    sessionKey:'',    openId:'',  },   /**   * 生命周期函数--监听页面加载   */  onLoad: function (options) {    this.getSessionKey();  },   getPhoneNumber: function(e){    if (e.detail.errMsg == "getPhoneNumber:fail user deny") {      wx.showToast({        title: '拒绝授权,无法获取用户手机号码!',      })       return;    }    //解密数据获取手机号码    this.decryptData(this.data.sessionKey,e.detail.iv,e.detail.encryptedData);  },   //获取SessionKey  getSessionKey: function(){    wx.login({      success:res =>{        console.log('code:'+res.code);        var data = {          'appid':'***********',//注意appId、secret需要替换为自身小程序的          'secret':'**************************',          'js_code':res.code,          'grant_type':'authorization_code'        };         wx.request({          url:'https://api.weixin.qq.com/sns/jscode2session',          data:data,          method:'GET',          success:res =>{            console.log("jscode2session result: ",res);            this.setData({              sessionKey:res.data.session_key,              openId: res.data.openId            })          },          fail:function(res){            console.log("获取jscodeSession fail: ",res);          }        })      }    })  },   //解密数据  decryptData: function(key,iv,encryptedData){    var processData = WXBizDataCrypt.decode(key,iv,encryptedData);    console.log("解密数据: ",processData);    var jsonObj = JSON.parse(processData);    this.setData({      phoneNum: jsonObj['phoneNumber']    })  },})


2.4.2 getphonenumber.wxml 实现

<!--pages/getphonenumber/getphonenumber.wxml--><button type="primary"  bindgetphonenumber="getPhoneNumber" open-type='getPhoneNumber'>获取手机号码</button><text>获取到的手机号码:{{phoneNum}}</text>

到这里,编码过程已经完成了。 备注:一般情况下 获取jscode2session 是放到服务器端去实现的,这里我把获取sessionKey全都放在小程序端去实现了。 参考小程序官网链接:


3、运行效果图

点击获取手机号码:



小程序开发实践之浅析如何获取手机号码

本文转载于:掘金社区,如有侵犯,请联系删除


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手把手教你在微信小程序中使用canvas绘制天气折线图(附代码)
  • 浅析微信小程序中自定义组件的方法
  • 总结分享一些小程序开发中遇到的问题(帮忙避坑)
  • 聊聊小程序怎么实现“全文收起”功能
  • 怎么从微信卡包跳转到小程序?实现方法浅析
  • 小程序开发实践之浅析如何获取手机号码

相关文章

  • 2022-04-29Vue 和 Yii 怎么配合?
  • 2022-04-29社交网站内容对SEO的价值
  • 2022-04-29Photoshop设计绚丽的3D艺术字教程
  • 2022-04-29教你在laravel中如何使用elaticsearch(步骤分明)
  • 2022-04-29PHP过滤HTML标签代码方法
  • 2022-04-29Photoshop制作抽象炫光的艺术字效果
  • 2022-04-29浅谈css3 device-width和width之间的差异
  • 2022-04-29Photoshop打造超酷的火焰图形
  • 2022-04-29vue.js怎么实现验证码
  • 2022-04-29vue3为什么快?vue3的效率提升主要在哪方面?

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 为什么不建议使用@import引入css
    • Photoshop制作金属质感的工具图标
    • PHP中Error与Exception的区别是什么
    • Photoshop制作可口的巧克力立体字教程
    • 列举论坛最常见的SEO优化问题及解答
    • DEDE建站内部SEO优化
    • Photoshop制作中秋节飘带艺术字教程
    • 什么是依赖注入?在Angular中怎么实现?
    • 关于ThinkPHP的join关联查询不使用默认的表前缀
    • Photoshop设计时尚大气的3D螺旋球

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有