当前位置: 首页 > news >正文

2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

前言

  • 小程序中有很多地方都会用到用户的手机号,比如登陆注册,填写收货地址等等。有了这个组件可以快速获取微信绑定手机号码,无须用户填写
  • 网上大多数教程还是往年的,而微信官方的api已做了修改。本篇文章将使用最新的方法获取手机号

具体实现

前端

  • 获取手机号|微信开放文档

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

  • 另外,新版本接口不再需要提前调用wx.login进行登录。
    在这里插入图片描述

  • 需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code

  • 然后把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。

  • 每个code有效期为5分钟,且只能消费一次。

:getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。

总结成一句话就是:我们前端只要把getPhoneNumber获取到的code,传给后端就可以了。

在这里插入图片描述
代码示例

<view style="padding: 50rpx;"><button open-type="getPhoneNumber" type="primary" bindgetphonenumber="getPhoneNumber">微信账号一键登录</button>
</view>
Page({getPhoneNumber (e) {let detail = e.detail;console.log(detail);if (detail.errMsg === "getPhoneNumber:ok") {console.log('用户同意授权');let code = detail.code; // 动态令牌console.log(code);wx.request({url: '你的接口,比如登录',data: {code},success(res) {console.log(res.data); // 后端返回解析出的手机号,或者直接返回登录成功的信息}})} else {console.log('用户拒绝授权');}}
})

在这里插入图片描述

后端(服务端)

1. 获取请求参数code和access_token

  • 我们服务端调用获取手机号是调用接口:getPhoneNumber

  • 服务端获取手机号 | 微信开放文档
    在这里插入图片描述

  • 该接口需要两个请求参数:
    在这里插入图片描述

  • code就是我们前端发送过来的那个

  • access_token需要服务端调用getAccessToken接口获取:获取接口调用凭据 | 微信开放文档
    在这里插入图片描述
    请求参数:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=换成你的APPID&secret=换成你的APPSECRET

在这里插入图片描述
然后我们就可以获取到access_token

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

2. 获取手机号

最后使用我们上面提到的getPhoneNumber接口,请求参数为前端传过来的code和我们刚刚获取的access_token即可。

https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=ACCESS_TOKEN

请求参数

{
"code": "e31968a7f94cc5ee25fafc2aef2773f0bb8c3937b22520eb8ee345274d00c144"
}

注意access_token是放在URL里面code放body里面
返回的数据里面就包含了手机号


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

然后后端获取到手机之后,可以顺便把其他业务逻辑处理了,比如登录

一句话总结

前端把getPhoneNumber获取到的code传给后端,后端获取access_token和前端传过来的code,请求getPhoneNumber服务端接口,即可获取到手机号。

❤如果觉得有用的话,请给我个三连

相关文章:

2023年微信小程序获取手机号授权登录注册详细教程,包含服务端教程

前言 小程序中有很多地方都会用到用户的手机号&#xff0c;比如登陆注册&#xff0c;填写收货地址等等。有了这个组件可以快速获取微信绑定手机号码&#xff0c;无须用户填写。网上大多数教程还是往年的&#xff0c;而微信官方的api已做了修改。本篇文章将使用最新的方法获取手…...

YOLOv8模型学习笔记

在前面的章节中博主学习了YOLOv5的相关知识&#xff0c;从YOLOv5的数据增强处理到模型设计&#xff0c;从正负样本匹配策略到LOSS设计&#xff0c;今天博主学习的是YOLOv8&#xff0c;同为ultralytics公司的产品&#xff0c;两者无论是思想层面还是具体的设计方面都有着异曲同工…...

Java SE知识点1

一、continue、break、和return的区别是什么? 在循环结构中,当循环条件不满足或者循环次数达到要求时,循环会正常结束。但是,有时候可能需要 在循环的过程中,当发生了某种条件之后 ,提前终止循环,这就需要用到下面几个关键词: 1. continue :指跳出当前的这一次循环,…...

华为OD机试模拟题 用 C++ 实现 - 端口合并(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明端口合并题目输入输出示例一输入输出说明示例二输入输出说明示例三输入输出说明...

C++ Primer Plus 第6版 读书笔记(3) 第3章 处理数据

目录 3.1 简单变量 3.1.1 变量名 *位与字节 3.1.4 无符号类型 3.1.7 C如何确定常量的类型 C是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言&#xff0c;是C语言的超集。本书是根据2003年的ISO/ANSI C标准编写的&#xff0c;通过大量短…...

ArrayList源码解读

参数 //默认初始容量private static final int DEFAULT_CAPACITY 10;//空数组(用于空实例)private static final Object[] EMPTY_ELEMENTDATA {};//用于默认大小空实例的共享空数组private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA {};//保存数据的数组tra…...

python实战应用讲解-【语法高级篇】时间与日期(附python示例代码)

目录 保持时间、计划任务和启动程序 time 模块 time.time() 函数 time.sleep() 函数 Python3 日期和时间...

D. Moscow Gorillas(双指针 + 区间分析)

Problem - D - Codeforces 在冬天&#xff0c;莫斯科动物园的居民非常无聊&#xff0c;尤其是大猩猩。你决定娱乐他们&#xff0c;带了一个长度为n的排列p到动物园。长度为n的排列是由n个从1到n的不同整数以任意顺序组成的数组。例如&#xff0c;[2,3,1,5,4]是一个排列&#xf…...

华为OD机试题,用 Java 解【相同数字的积木游戏 1】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

Python实现GWO智能灰狼优化算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景灰狼优化算法(GWO)&#xff0c;由澳大利亚格里菲斯大学学者 Mirjalili 等人于2014年提出来的一种群智能优…...

无线蓝牙耳机哪个牌子好?2023质量好的无线蓝牙耳机推荐

近几年&#xff0c;随着蓝牙技术的不断进步&#xff0c;使用蓝牙耳机的人也越来越多。蓝牙耳机的出现&#xff0c;不仅能让我们摆脱线带来的约束&#xff0c;还能提升我们学习和工作的效率。最近看到很多人问&#xff0c;无线蓝牙耳机哪个牌子好&#xff1f;下面&#xff0c;我…...

Qt之QTableView自定义排序/过滤(QSortFilterProxyModel实现,含源码+注释)

一、效果示例图 1.1 自定义表格排序示例图 本文过滤条件为行索引取余2等于0时返回true&#xff0c;且从下图中可以看到&#xff0c;奇偶行是各自挨在一起的。 1.2 自定义表格过滤示例图 下图添加两列条件&#xff08;当前数据大于当前列条件才返回true&#xff0c;且多个列…...

电商(强一致性系统)的场景设计

领域拆分&#xff1a;如何合理地拆分系统&#xff1f; 一般来说&#xff0c;强一致性的系统都会牵扯到“锁争抢”等技术点&#xff0c;有较大的性能瓶颈&#xff0c;而电商时常做秒杀活动&#xff0c;这对系统的要求更高。业内在对电商系统做改造时&#xff0c;通常会从三个方面…...

算法与数据结构(一)

一、时间复杂度 一个操作如果和样本的数据量没有关系&#xff0c;每次都是固定时间内完成的操作&#xff0c;叫做常数操作。 时间复杂度为一个算法流程中&#xff0c;常数操作数量的一个指标。常用O(读作big O)来表示。具体来说&#xff0c;这个算法流程中&#xff0c;发生了多…...

【Python】元组如何创建?

嗨害大家好鸭&#xff01;我是小熊猫~ Python 元组 Python 的元组与列表类似&#xff0c; 不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列表使用方括号。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c; 并使用逗号隔开即可。 如下实例…...

qt操作文件以及字符串转换

//从文件加载英文属性与中文属性对照表QFile file(":/propertyname.txt");if (file.open(QFile::ReadOnly)) {//QTextStream方法读取速度至少快百分之30#if 0while(!file.atEnd()) {QString line file.readLine();appendName(line);}#elseQTextStream in(&file)…...

数组中只出现一次的两个数字(异或法思路)

题目简介 一个数组中只有2个数字只有一个&#xff0c;其他数字都有两个。找出这两个数字。a, b 用HashMap记录就不说了。 这里记录一下用异或的方式解决。 由于异或特性为自己异或自己为0。a^a 0;所以可以异或数组中的所有数字得出 a^b 的结果&#xff0c;其他相同的都消掉…...

python支持的操作系统有哪些

支持python开发环境的系统有Linux、OSX和windows&#xff0c;以及所有主要的操作系统中。 Linux&#xff0c;Linux系统是为编程而设计的&#xff0c;因此在大多数Linux计算机中&#xff0c;都默认安装了Python。编写和维护Linux的人认为会使用这种系统进行编程。要在Linux中运…...

S3C2440开发环境搭建

拿出了之前的S3C2440开发板&#xff0c;然后把移植uboot、移植内核、制作根文件系统、设备树编写驱动等几项再做一遍&#xff0c;这篇文章先记录下环境搭建过程&#xff0c;以及先把现成的uboot、内核、根文件系统下载进去&#xff0c;看看开发板还能不能用&#xff0c;先熟悉一…...

软件测试之测试用例

测试用例 1. 测试用例定义 测试用例又叫做test case&#xff0c;是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。 2. 编写测试用例的原因 2.1 理清思路&#xff0c;避免遗漏 如果测试的项目大而复杂&#…...

可解释AI评估指南:从原型纯度到TCAV分数的量化度量体系

1. 项目概述&#xff1a;为什么我们需要量化评估可解释AI&#xff1f;在人工智能&#xff0c;尤其是深度学习模型日益渗透到医疗诊断、自动驾驶、金融风控等关键领域的今天&#xff0c;一个核心的信任危机始终悬而未决&#xff1a;我们如何相信一个“黑箱”模型做出的决策&…...

不止于导航:用AI Habitat的语义分割数据,教你构建自己的室内物体识别与场景理解Pipeline

不止于导航&#xff1a;用AI Habitat的语义分割数据构建室内物体识别与场景理解Pipeline 在计算机视觉与机器人领域&#xff0c;室内场景理解一直是极具挑战性的研究方向。传统方法依赖于昂贵的传感器设备和人工标注数据&#xff0c;而仿真平台的出现为这一领域带来了革命性变…...

Tera数据库:从入门到精通,打造互联网级分布式存储系统

Tera数据库&#xff1a;从入门到精通&#xff0c;打造互联网级分布式存储系统 【免费下载链接】tera An Internet-Scale Database. 项目地址: https://gitcode.com/gh_mirrors/ter/tera Tera数据库是一个高性能的分布式NoSQL数据库系统&#xff0c;专为处理互联网规模的…...

Blender 3MF插件终极指南:从设计到3D打印的完整工作流解决方案

Blender 3MF插件终极指南&#xff1a;从设计到3D打印的完整工作流解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾因3D打印文件格式转换而头疼&#xff…...

ARM PMCCNTR寄存器:性能监控与时钟周期计数详解

1. ARM PMCCNTR寄存器深度解析在现代处理器架构中&#xff0c;性能监控单元(PMU)是系统调优和性能分析的关键组件。作为ARM架构性能监控的核心&#xff0c;PMCCNTR寄存器提供了精确的处理器时钟周期计数能力。这个64位寄存器在AArch32和AArch64执行模式下具有架构映射关系&…...

虚拟工业仿真软件能模拟实操吗?看完你就懂了

在高端制造与复杂工程场景中&#xff0c;工业仿真软件是否只是“纸上谈兵”&#xff1f;它能否真正模拟出真实的物理过程、操作流程与系统行为&#xff1f;答案是&#xff1a;可以&#xff0c;而且正在改变工业研发的逻辑。秩益科技自主研发的DIMAXER工业仿真软件&#xff0c;正…...

AI编码助手如何重塑开发体验:从工具到伙伴的范式转变

1. 项目概述&#xff1a;当AI编码助手遇上“氛围感”最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“awesome-ai-vibe-coding”。初看这个标题&#xff0c;可能会有点摸不着头脑。“Awesome”系列我们见多了&#xff0c;是各种优质资源的集合&#xff1b;“AI Coding”也…...

从玩具到生产:基于run-llama/rags构建模块化RAG系统的工程实践

1. 项目概述&#xff1a;从“玩具”到“生产力”的RAG系统构建如果你最近在关注大语言模型的应用落地&#xff0c;那么“RAG”这个词一定高频出现在你的视野里。RAG&#xff0c;即检索增强生成&#xff0c;它试图解决大模型“一本正经胡说八道”和“知识陈旧”两大核心痛点。简…...

优化ESP32 ADF 音频问题

可以&#xff0c;现在已经进入音质调试阶段了&#xff0c;不是“能不能播放”的阶段。 你现在的问题大概率不是一个单点问题&#xff0c;而是下面几类之一&#xff1a; 1. 音量 / 增益太大&#xff0c;导致 ES8388 或 MD8002A 功放削顶失真 2. I2S 时钟不准&#xff0c;导致声音…...

思考的快与慢:模型的“即时回答”与“深思熟虑”

上一篇文章我们学会了如何“使唤”模型&#xff1a;同步、异步、批量、流式&#xff0c;一通操作下来&#xff0c;你已经是调接口的好手了。但很快你可能会发现一个有意思的现象——同样是回答问题&#xff0c;有时候模型快到几乎零秒响应&#xff0c;有时候却要停顿好几秒甚至…...