0 说明

本文,是纯前端实现微信小程序获取用户手机号的实现方法总结,并给出了相应的注意点与优化点说明。
(注意:获取用户手机号,需要用已通过企业认证的小程序账号)

0.1 为什么要写这篇文章?

1、记录一下实现方法。2、官方文档写得详细具体,但弯弯绕绕,不易理解与操作。3、网络上缺少相关的高质量的完整文章。

0.2 纯前端,能不能独自实现一个获取用户手机号的demo?

可以。

0.3 纯前端,需不要对手机号等信息进行解密?

不需要。

0.4 本文有哪些局限性?

对于后续优化,本文只能给出方向,不能给出具体实现;对于一进入小程序,不需要点击按钮就获取用户手机号,并未找到实现方法;对于点击获取用户手机号,并完成用户真实性相关验证,从而一键登录的需求,未进行思考与实现。


1 实现

1.1 文档

你需要阅读的文档:
phonenumber.getPhoneNumber
auth.getAccessToken
获取手机号(新版)
获取手机号(老版)
后端 API

1.2 getPhoneNumber接口

第一步,不是新建按钮,而是先看这个接口,要获得用户手机号,就是要请求这个接口。
请求地址

#接口信息
POST https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN

请求参数
请求这个接口,需要调用两个参数access_token,code,通过用这两个参数请求这个接口,就可以获得用户手机号了。
示例返回

{"errcode":0,"errmsg":"ok","phone_info": {"phoneNumber":"xxxxxx","purePhoneNumber": "xxxxxx","countryCode": 86,"watermark": {"timestamp": 1637744274,"appid": "xxxx"}}
}

所以问题,就是怎么获得这两个参数呢?

1.3 code

code要通过按钮获得,这时候,我们才来添加一个按钮,用户点击,我们获得code
wxml

//按钮
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>

js

// 方法
getPhoneNumber (e) {console.log(e.detail.code)
}

这里得到的e.detail.code就是我们所需要的code了,可以把它存在data里

1.4 access_token

请求地址

#请求地址
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

请求参数
grant_typeappid,secret,这里是get请求,所以直接拼在请求url里就行了
这里直接将AppSecret直接写在了请求里,非常不安全,当然实际上,此处仅是demo使用
真实开发中都是通过后端请求的,连api.weixin.qq.com根本无法配置到前端的可访问服务器地址中去
返回示例

{"access_token":"ACCESS_TOKEN","expires_in":7200}

在这里,我们就拿到了access_token

1.5 完成

实际上到这里已经完成了,现在新版获取的手机号不用解密、access_token在获取之前也不需要登陆,比老版本方便了很多


2 代码

wxml

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号
</button>

js

Page({data: {appId: '******',  // AppIdappSecret: '******',  // AppSecretaccessToken:'',  // 所需的AccessTokenphoneCode:'',  // 所需的CodephoneNumber:"",  // PhoneNumber},// 获取用户手机号按钮,点击事件getPhoneNumber(e){// 获取所需的Codethis.setData({phoneCode: e.detail.code})// 获取用户手机号this.getPhone()},/*** 获取用户手机号*/getPhone(){var _this =this;wx.request({url:'https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=' + _this.data.accessToken,method: 'POST',data:{// 获得的所需的Codecode: _this.data.phoneCode// access_token写在路由中},success (res) {// 成功获得用户手机号_this.setData({phoneNumber: res.data.phone_info.phoneNumber ?? ''})}})},/*** 获取所需的access_token*/getToken(){var _this =this;wx.request({url:'https://api.weixin.qq.com/cgi-bin/token?appid=' + _this.data.appId + '&secret=' + _this.data.appSecret + '&grant_type=client_credential',success (res) {_this.setData({accessToken: res.data.access_token}) }})},/*** 生命周期函数--监听页面加载*/onLoad(options) {// 获得access_tokenthis.getToken()},
)}

3 优化

  1. 此处,仅为前端demo,后续这些接口都需要从服务端发起访问,前端不能直接访问api.weixin.qq.com,并且也不能将appId与appSecret直接在前端写明。
  2. 此处,所有的请求都是微信小程序原生的wx.request,后续需要进行promise化封装,以及做一些请求加密解密、请求拦截器、api封装等等的操作。
  3. 此处,仅处理了用户同意授权的情况,而没有对用户拒绝授权的情况进行处理。
  4. 此处,getToken是在onLoad生命周期中进行的,进行代码改造,基于业务需求进行代码结构优化。

4 注意

  1. 示例代码getPhone()中,access_token需要写在路由中,虽然是POST方法,但也不能用data的方式,否则会报错47001 data format error hint
  2. 示例代码getToken()中,需要用到AppId与AppSecret。
  3. 需要使用企业认证的小程序账号,才能获取用户手机号,否则在返回请求中会报错getPhoneNumber:fail no permission
  4. 不需要进行解密操作,解密是老版实现方法中所需要的,既实现复杂,又不安全。

【微信小程序】获取用户手机号的实现相关推荐

  1. 微信小程序获取用户手机号--官方示例

    微信小程序获取用户手机号–官方示例 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNu ...

  2. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号

    获取微信用户绑定的手机号,需先调用wx.login接口. 小程序获取code. 后台得到session_key,openid. 组件触发getPhoneNumber 因为需要用户主动触发才能发起获取手 ...

  3. springboot 微信小程序获取用户手机号 最新方式

    springboot 微信小程序获取用户手机号 直接开整!!! 现在有两种方式获取微信用户的手机号 第一种 这种方式比较旧了,也能获取到手机号,但不建议使用. 1.前端调用wx.login()(官方的 ...

  4. 微信小程序获取用户手机号授权方法

    微信小程序获取用户手机号方法 首先在 app.json 页面添加一个新的用户授权页面,放在首页index的后面即可 在 app.js 页面中编写如下代码: 这里包含了获取用户信息的相关代码 //app ...

  5. 微信小程序获取用户手机号,后端php实现 (前后端完整代码附效果图)

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 如图: 小程序代码: 第一步,登录,获取用户的 session_key: 第二步,点击按钮调用 bindget ...

  6. 微信小程序获取用户手机号存数据库,前后端都有《Java后台版 》

    开发这个功能的时候走了很多弯路磨了很多时间,我发一下我自己用的来帮助大家 流程图 前端 index.wxml <view>我的首页内容</view><button cla ...

  7. 微信小程序python解析获取用户手机号_微信小程序获取用户手机号详解

    最近在做一款微信小程序,需要获取用户手机号,具体步骤如下: 流程图: 1.首先,客户端调用wx.login,回调数据了包含jscode,用于获取openid(用户唯一标识)和sessionkey(会话 ...

  8. 微信小程序获取用户手机号授权

    1.获取微信用户绑定的手机号,需要先在主页面调用wx.login接口 2.使用button按钮触发授权弹窗 <button open-type="getPhoneNumber" ...

  9. 小程序获取用户手机号权限,微信认证

    问题:小程序获取用户手机号,提示权限不足 原因:小程序没有进行微信认证 解决方案:在小程序的管理后台,点击右上角小程序logo,然后找到微信认证 微信认证方法1:自己开通 点击对应详情,根据流程一步一 ...

  10. 微信小程序获取用户信息流程(2022年版)

     开门见山地说,本文主要讲述微信小程序在2022年以后获取用户信息的主要方法,如果想要了解2022年之前微信小程序获取用户信息的相关知识或者是微信小程序之前这部分的设计思想的话,推荐博主的下面这篇博客 ...

最新文章

  1. 后台如何通过Request取得多个含有相同name的控件的值?
  2. 源码编译wget问题解决
  3. 剑指Offer之整数中1出现的次数(从1到n整数中1出现的次数)
  4. 寒武纪官宣25亿美元估值融资,也有AI芯片公司要被收购了
  5. 运用CSS3制作3D盒子骰子
  6. SQL SERVER 数据库通过连接服务器 调用ORACLE 数据库中的存储过程
  7. Java版点餐小程序2022最新版笔记,Springboot+Mysql+Freemarker+Bootstrap+微信小程序实现扫码点餐小程序
  8. Java中字符串数组转 long[]基本类型数组的方法
  9. 有效沟通bic法则_有效沟通的五个法则
  10. instanceof java 报错_java中instanceof怎么理解?java中instanc 爱问知识人
  11. 我们肯定需要开发自己的BOL和GENIL
  12. 计算机作为信息处理工具 应用于科学研究,计算机2013分春章节试题及答案.doc
  13. matlab 动态显示图片,Matlab动态绘图、展示并保存的一种方法
  14. 多平台博客发布工具OpenWrite的使用
  15. 如何设置 MyEtherWallet 冷钱包
  16. linux 环境安装配置,Linux相关环境安装与配置
  17. flask通用rbac权限框架
  18. 点到反比例函数最短距离怎么求_谁教教我反比例函数距离公式?
  19. unity shader法线贴图实现凹凸映射效果
  20. android微信qq提醒功能,Android用Window实现类似微信、QQ来消息的时候的通知提示

热门文章

  1. 服务器安装操作系统失败,安装程序配置服务器失败怎么办
  2. 开发润乾报表过程:因为内容过多分页导致的这条线
  3. sublimeText3编辑器使用大全
  4. 成都商业贷款买新房,取公积金流程
  5. windows镜像文件官方下载地址
  6. stm32不使用外部晶振管脚怎么处理_stm32103如果不用32k晶振,那引脚是悬空还是接地?...
  7. ABclonal再添一员“蛋白~DNA互作研究”大将—CUTTag
  8. 一文带你熟悉android的smali语法一
  9. 计算机二级能加几个创新创业学分,创新创业活动学分认定细则
  10. 编写并调用平均值函数