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

2023-11-03

微信小程序获取用户手机号需要企业小程序,个人小程序是无法获取到手机号的。我们先看看官方的解释。

获取手机号

获取微信用户绑定的手机号,需先调用wx.login接口。

因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用 button 组件的点击来触发。

注意:目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。

使用方法

需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到微信服务器返回的加密数据, 然后在第三方服务端结合 session_key 以及 app_id 进行解密获取手机号。

注意

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

这是写在前端页面的,需要用按钮去触发这个功能。点击之后会获取到2个数据:encryptedData和 iv ,之后会用得到。

Markup

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

返回参数说明

参数 类型 说明 最低版本
encryptedData String 包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法
iv String 加密算法的初始向量,详细见加密数据解密算法

然后首先用wx.login获取code,用户有效凭证来换取用户的sessionKey和openid。换取sessionKey需要开发者在自己的服务端调用 auth.code2Session 这个方法。

用GET方式提交四个数据:

请求地址

Bash

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数

     属性 类型 默认值 必填 说明
appid string 小程序 appId
secret string 小程序 appSecret
 js_code string 登录时获取的 code
grant_type string 授权类型,此处只需填写 authorization_code

其中 grant_type 不要我们管,我们只需填写小程序APPID,还有小程序密钥appSecret,再是wx.login获取的code。

得到sessionkey之后我们就能换取手机号了。我们先来整理一下我们获得了哪些数据以及最后换取手机号需要哪些数据。

首先是点击获取手机号的按钮得到的encryptedData和iv,然后是wx.login获取的code(最后一步获取手机号不需要),然后是用code换取的session_key,最后一步换取手机号就要这三个参数和小程序的APPID就可以了。

换取手机号需要在服务端操作,微信提供了示例的demo,可以点击下载,我用的是PHP版本的,你只需要传入对应的数据即可。

如图:

一切做好之后,就能在小程序端得到用户的手机号了。如下图:

countryCode是区号,phoneNumber是用户绑定的手机号(国外手机号会有区号),purePhoneNumber是没有区号的手机号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序获取用户手机号 的相关文章

  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 用户可以更改 PHP 中 $_SESSION 的值吗?

    这是我的想法 我想知道是否可能 将信息存储在 PHP 的 SESSION 变量中有多安全 在 SESSION 变量中存储变量有两个潜在的 不安全 风险 另一个答案所描述的第一个称为 会话固定 这里的想法是 由于会话 ID 存储在 cooki
  • 图像随机损坏(但刷新后加载)并显示“资源解释为图像但使用 MIME 类型 text/html 传输”

    我目前正在开发一个简单的 php 网站 问题是 我的整个网站中的图像 发生在所有 php 文件中 随机损坏并显示错误资源解释为图像 但以 MIME 类型 text html 传输但是 如果我尝试多次刷新页面 可以再次加载图像并且错误消失 我
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从网站网址中隐藏 .html 扩展名

    我知道这个问题以前曾被问过 但有人知道隐藏 html 扩展名的好方法吗 我已经尝试了许多代码和许多答案https stackoverflow com https stackoverflow com 但我没有看到结果 那是我再问你一次 我有一
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 将 cookie 设置为在当天结束时过期

    我想设置一个 cookie 并让它在一天结束时过期 这有效 但 24 小时后过期 setcookie route upgrade voted true time 86400 这不起作用 setcookie route upgrade vot
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 如何在codeigniter中将上传图片比例限制为16:9?

    这是我用来上传图像的代码 this gt load gt library upload ext pathinfo file name PATHINFO EXTENSION img name now ext imgConfig upload
  • PHP 接口有属性吗?

    PHP 中的接口有属性 还是只有方法 您可以在 DocBlock 中为接口声明属性 然后 IDE 将提示接口的这些属性 PhpStorm 会这样做 但这不会强制在实现类中实际实现这些字段 例如 property string passwor
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • 字符串相似度的算法(比Levenshtein和similar_text更好)? php, Js

    在哪里可以找到比 levenshtein 和 phpimilar text 方法更准确地评估错误字符的拼写的算法 Example similar text jonas xxjon similar echo similar returns 6
  • PHP 检查当前日期是在设定日期之前还是之后

    我从数据库中提取一个日期 其格式为 dd mm YYYY 我想做的是检查当前日期 如果当前日期早于数据库中的日期 则需要打印数据库日期 如果是在之后 则需要打印 继续 有人能指出我正确的方向吗 if strtotime database d
  • PHP session_regenerate_id 和黑莓浏览器

    问候 我正在开发一个登录系统 并陷入了黑莓浏览器身份验证的困境 他们似乎对 PHP 的 session regenerate id 有问题 有人可以建议替代方案吗 以下是身份验证和登录脚本 UPDATE看来会话一般都不起作用 拿出 sess
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • 矩形超出边界是什么意思

    PPB Graphics2D PaintImageData 矩形超出界限是什么意思 我几乎在我检查的每一段代码中都看到了它 最新的代码是 define my consumer key define my consumer secret oa
  • 如何在 PHP 5.6 中通过 php.ini 设置“verify_peer_name=false”SSL 上下文选项

    案例 我想打开 SSL 连接localhost而 SSL 证书是 FQDN 的问题 问题 没有进行特殊处理就行 下面的程序失败并显示以下消息 PHP Warning stream socket enable crypto Peer cert

随机推荐

  • C语言-快速排序算法-原理-详解(完整代码)

    目录 原理 思想 代码 快排代码详解 执行结果 原理 先选择一个数作为 基准值 这里用的是 第一个数 进行一次排序 然后将所有比 基准值小的数 放在基准值的 左边 将所有比 基准值大的数 放在基准值的 右边 然后再对两边的 各自 再取一个数
  • Git基本概念及常用命令

    一 基本概念 1 1 概念 Git是一个开源的分布式版本控制系统 在项目开发过程中 我们可以用它记录我们对项目的操作记录以及项目迭代过程 git有两种类型的仓库 分别是本地仓库和远程仓库 本地仓库 是在开发人员自己电脑上的Git仓库 远程仓
  • 搭建zimg内网图片服务器+springboot+Java对接

    简述 zimg是图像存储和处理服务器 您可以使用URL参数从zimg获取压缩和缩放的图像 zimg的并发I O 分布式存储和时间处理能力非常出色 您不再需要在图像服务器中使用nginx 在基准测试中 zimg可以在高并发级别上处理每秒300
  • 对话框拦截控件消息

    BOOL CQuickMosaicDlg PreTranslateMessage MSG pMsg if pMsg gt message WM KEYDOWN 键盘按下 if pMsg gt hwnd GetDlgItem IDC DATA
  • 结构型设计模式之装饰器模式【设计模式系列】

    系列文章目录 C 技能系列 Linux通信架构系列 C 高性能优化编程系列 深入理解软件架构设计系列 高级C 并发线程编程 设计模式系列 期待你的关注哦 现在的一切都是为将来的梦想编织翅膀 让梦想在现实中展翅高飞 Now everythin
  • 有手就会做!保姆级Jmeter分布式压测操作流程(图文并茂)

    分布式压测原理 分布式压测操作 保证本机和执行机的JDK和Jmeter版本一致 配置Jmeter环境变量 配置Jmeter配置文件 上传每个执行机服务jmeter chmod R 755 apache jmeter 5 1 1 执行机配置写
  • rk3399pro移植安装opencv源码编译包问题记录

    之前在3399pro开发板上编译了opencv4 5 1的源码 将编译后的文件导出 在新的开发板上进行移植安装 本文记录了移植安装过程中出现的问题及解决方法 2021 05 18更新 1 环境配置 在移植安装之前配置新板子的开发环境 参考博
  • centos5 下安装oracle10g

    环境 CentOS release 5 Final 1 创建用户 没啥说的 照着官方文档的思路做就行了 groupadd oinstall 创建组用户 groupadd dba 创建组用户 useradd g oinstall G dba
  • 融云:AI 机器人在社交软件中的花样存在

    最近 AIGC 行业的新话题来自 HeyGen 的一段自动生成视频 关注 融云全球互联网通信云 了解更多 一眼看上去 真 到吓人 手势 嘴型等细节逼近真人效果 除了 眨眼的频率有点高 图源 HeyGen 这是 AI 数字人公司 HeyGen
  • Ext combobox 动态模糊匹配

    var gfxmComb new Ext form ComboBox id gfxmComb store gfxmStore typeAhead true mode local editable true displayField xmMc
  • vtk python3环境安装配置

    vtk python3环境安装配置 安装miniconda 下载地址 https docs conda io en latest miniconda html https docs conda io en latest miniconda
  • 2019年金秋第五周助教小结

    总结 经观察本周作业完成情况 有一部分同学对于第二题的要求有所误解 题目的加密是要求将每个字符向后移动三个位置 而大部分人理解成了将每个字符的ASCll码值加三个单位 因为本周的作业相较容易 除了对题目的理解有问题之外 大部分同学都能写的出
  • UDP协议的简单概述

    1 UDP协议概述 UDP是User Datagram Protocol 用户数据协议 的简称 是一种无连接的协议 该协议工作在OSI模型中的第四层 传输层 处于IP协议的上一层 传输层的功能就是建立 端口到端口 的通信 UDP提供面向事务
  • C语言入门-王道考研

    1 1 C语言结构
  • 七牛云图片上传

    七牛云图片上传 进入七牛云官网 注册 登录找到对象存储 新建存储空间 进入个人中心 找到秘钥管理获取AK和SK 代码 pox xml导入依赖
  • pyecharts 画折线图去掉折线上小圆圈

    如果想删除上图标记出来的小圆圈 变为如下形式 只需在代码中加入 is symbol show False 即可 line add country date column dict country line width 3 is symbol
  • 数据库设计(真题讲解)-软件设计(三十四)

    系统开发 McCabe复杂度 下 软件设计 三十三 https blog csdn net ke1ying article details 129719533 spm 1001 2014 3001 5501 ER模型 1对1 1对多 多对多
  • matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析范文

    专业知识整理分享 利用 Matlab 绘制正弦信号的频谱图并做相关分析 一 作业要求 1 信号可变 信号的赋值 相位 频率可变 2 采样频率 fs 可变 3 加各种不同的窗函数并分析其影响 4 频谱校正 5 频谱细化 二 采用 matlab
  • 最少砝码问题(用一部分数的和/差表示区间上所有的整数)

    问题1 需要表示 1 N 的所有重量 最少需要多少砝码 答案 需要 1 2 4 ceiling logN 每个砝码代表二进制数的一位 N有ceiling logN 个二进制位 问题2 需要表示 1 N 的所有重量 手头已有一些砝码 问 怎样
  • 微信小程序获取用户手机号

    微信小程序获取用户手机号需要企业小程序 个人小程序是无法获取到手机号的 我们先看看官方的解释 获取手机号 获取微信用户绑定的手机号 需先调用wx login接口 因为需要用户主动触发才能发起获取手机号接口 所以该功能不由 API 来调用 需