微信小程序手机号授权登录

news2024/11/25 10:00:42

文章目录

    • 小程序端
    • 服务端
    • 注意事项

微信小程序,手机号授权登录需求。

大体流程是这样的:

  1. 小程序端使用 getPhoneNumber 向微信平台获取授权
  2. 通过微信授权后,小程序端接收微信授权后的回调
  3. 小程序携带微信的回调请求自己的服务端
  4. 服务端请求微信获取手机号并将手机号回调给小程序端

小程序端

具体步骤和代码如下:

第一步:

<button class="login-btn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">
    <text>登录/注册</text>
</button>

请添加图片描述

必须是通过 button 组件open-type="getPhoneNumber",让用户自己手动点击按钮才能获取手机号。

第二步:
用户点击按钮同意获取手机号
请添加图片描述

第三步:
用户允许后,通过回调方法拿到获取手机号的Code:
回调方法:

getPhoneNumber(e) {
    console.log(e)
    const _this = this
    wx.showLoading({
        title: '',
    })
    if (e.detail.errMsg == "getPhoneNumber:ok") {
		// 这里携带参数请求自己的服务器来获取手机号
		// Code ...
	}
}

打印回调参数 e :

...
currentTarget:
dataset: {}
id: ""
offsetLeft: 86
offsetTop: 34
__proto__: Object
detail:
cloudID: "69_7GVM-VkjQvoxxxoU5lW33XmDqsmxxxPazG6c5Rcfld-xxx"
code: "f446fxxx58250428xxxx017ffbdceb2b8xxx6c22948d6xxx3de52a"
encryptedData: "hY6Y+s9cxxx7t4rUWJcoQ3rf6PTnRr7/jSiK/iajrUkhZ6xxxYJ/nDLH5hIRDUwRrT0/FPxxxDVQdGO+3MBZQS8Pe1l9FPc6xxxQDLM2tR8CoyMLvGQ/ryt3mGJExxx1+kwnw+zqMsCBrV0KK6jcnlqWVhds8YjkRS30nroA=="
errMsg: "getPhoneNumber:ok"
iv: "C0mxz6xxx7qFxxxxPg=="
...

新版接口会将 cloudID , code, encryptedData, iv 等参数一并返回。

在新本中,code 是要给后台用来获取手机号的,在旧版获取手机号的接口里,不会返回 code,如果你使用旧版本,就将 encryptedDataiv 传给服务端,服务端解密 encryptedData 来获取手机号。

新版本中,直接将 code 给服务端,服务端通过 code 和其他参数从微信平台先获取 accessToken,获取到之后,再使用token请求获取手机号的接口,获取完之后将明文手机号返回给小程序端。

建议使用新版获取手机号的方法。

服务端

服务端需要调用两个接口:

  1. getAccessToken: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html

在这里插入图片描述
这三个参数中appid和secret是需要从小程序端通过接口上传的。用户点击”允许“获取手机号的回调里,通过请求服务端的接口,将这些参数上传给服务端,服务端携带这些参数去获取access_token,下一步调用 getPhoneNumber 这个接口需要使用 token才能获取。

  1. getPhoneNumber: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html
    在这里插入图片描述
    服务端使用客户端上传上来的code和自己从上一步获取到的token,就可以请求微信来获取手机号了,获取到手机号之后将手机号返回给小程序端即可。

注意事项

需要注意:
3. 提前去调用 wx.login 进行登录并获取 code 授权码
4. 注意 wx.login 返回的 code 和 获取手机号回调的 code,并非同一个code,一个是微信授权码,一个是用需要给服务端用来获取accessToken的授权码code
5. 服务端getAccessToken接口里传的参数 grant_type 的值是 client_credential,而不是 authorization_code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QML 模型和视图

模型/视图架构简介 使用 QML 时&#xff0c;有些情况下需要使用模型视图结构显示一些列表等控件&#xff0c;比较好的方式是用 Python 接管数据模型部分&#xff0c;方便处理数据&#xff1b;QML 和 JavaScript 负责前端部分&#xff0c;实现前端和后端的分离。 MVD 简介 Mo…

C# 特性(一)——什么是特性

目录 什么是特性 Serializable DllImport Obsolete Conditional Attribute类 自定义特性 AttributeUsage的使用例子 特性非常常见&#xff0c;官方解释为&#xff1a; 特性&#xff08;Attribute&#xff09;是用于在运行时传递程序中各种元素&#xff08;比如类、方法…

【批处理DOS-CMD命令-汇总和小结】上网和通信相关命令-查看路由表,查看网卡GUID UUID(route、getmac)

一、查看、编辑路由表&#xff08;route&#xff09; 首先我们看看route命令的帮助信息&#xff0c;可以发现这个命令其实就是用来查看路由表、以及添加&#xff08;或编辑、删除&#xff09;路由项目的。 路由项目是指操作系统对数据包的导向规则&#xff0c;往往包括目标IP…

《统计学习方法》——条件随机场#习题解答#

引言 这是统计学习方法第十一章条件随机场的阅读笔记&#xff0c;包含所有公式的详细推导。 条件随机场(conditional random field,CRF)是给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型&#xff0c;其特点是假设输出随机变量构成马尔可夫随机场。 建议先阅…

【计算机网络】为什么是TCP四次挥手,可以变成三次吗?

【计算机网络】为什么是TCP四次挥手&#xff0c;可以变成三次吗&#xff1f; 文章目录 【计算机网络】为什么是TCP四次挥手&#xff0c;可以变成三次吗&#xff1f;引言TCP 四次挥手为什么 TCP 挥手需要四次呢&#xff1f;粗暴关闭 vs 优雅关闭 什么情况会出现三次挥手&#xf…

MySQL—SQL优化详解(下)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

FFmpeg 内存模型分析

标题 1. 内存模型图2. 分析流程3.追溯本源————源码分析3.1 AVPacket队列 什么时候生成的&#xff1f; 4 .AVPacket和AVFrame相关操作API5. av_read_frame源码分析 1. 内存模型图 2. 分析流程 我们解复用后,媒体流数据就会被分离开来,分别生成对应AVPacketList,然后通过av_…

BART论文解读

1 概述 全称&#xff1a;Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension。BART来源于Bidirectional and Auto-Regressive Transformers发表时间: 2019.10.29团队&#xff1a;Facebook AI Paper地址​arxiv.o…

chatgpt赋能python:Python怎么求解方程

Python怎么求解方程 在数学中&#xff0c;求解方程是一种基本的技能。Python作为一种广泛应用于科学计算和数据分析领域的编程语言&#xff0c;可以帮助我们求解各种类型的方程。Python提供了多个库和函数&#xff0c;使得求解方程在Python中变得非常轻松。 一元方程求解 一…

Android Framework分析SystemServer进程

SystemServer进程是Android系统的核心进程&#xff0c;运行在Android系统启动后&#xff0c;负责管理和加载系统服务。本文将介绍SystemServer进程的详细结构和工作原理&#xff0c;并使用代码注释的方式阐述其关键部分代码。 结构&#xff1a; SystemServer进程的核心是Syste…

SSH基本概念,带你了解SSH

1、SSH基本概念 SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于在不安全的网络中安全地传输数据。它是一种加密协议&#xff0c;可以保护数据在传输过程中不被窃取、篡改或伪造。SSH协议最初是由芬兰的Tatu Ylonen开发的&#xff0c;现在已经成为了一…

Hadoop集群之模板虚拟机的安装

Hadoop集群之模板虚拟机的安装 文章目录 Hadoop集群之模板虚拟机的安装0. 写在前面1. CentOS的安装1.1 配置电脑1.1.1 进入VMware1.1.2 自定义新的虚拟机1.1.3 解决虚拟机的兼容性1.1.4 选择当前虚拟机的操作系统1.1.5 选择虚拟机将来需要安装的系统1.1.6 电脑的具体配置1.1.7 …

KUKA机器人通过示教器进行关机冷启动的具体方法演示

KUKA机器人通过示教器进行关机冷启动的具体方法演示 如下图所示,首先需要登录管理员权限,默认密码:KUKA,然后点击左上角的机器人图标进行菜单选项,找到并点击“关机”选项, 如下图所示,找到并点击“重新启动控制系统PC”, 如下图所示,此时系统提示:确实要重新启动…

chatgpt赋能python:Python生成序列的方法详解

Python生成序列的方法详解 在Python编程中&#xff0c;序列&#xff08;Sequence&#xff09;是常用的数据类型之一。序列是有序的&#xff0c;可以通过下标访问其中的元素。Python中有多种方法可以生成序列&#xff0c;下面将对常用的几种方法进行详细介绍。 利用range函数生…

2023-06-16 Android Studio 使用CMakeList编译JNI ,最简单的demo源码

一、代码结构图&#xff0c;代码路径https://download.csdn.net/download/qq_37858386/87913001 二、cmakedemo\app\build.gradle 加下面的代码 externalNativeBuild {cmake {cppFlags "-frtti -fexceptions"}}externalNativeBuild {cmake {path src/main/jni/CMakeL…

国内大模型研究

自从chatgpt发布以来&#xff0c;国内大模型发展非常迅速。我对这项目技术也保持了非常多的持续关注&#xff0c;我一直认识&#xff0c;chatGPT以及其他GPT会给社会带来更大的变革。经过专业训练的大模型可以替代部分客服&#xff0c;部分程序员&#xff0c;部分美工&#xff…

Vue全家桶实战 从零独立开发企业级电商系统(免费升级Vue3.0)

Vue全家桶高仿小米商城–项目简介 文章目录 Vue全家桶高仿小米商城--项目简介电商项目选型--小米商城的页面流程&#xff1a;业务开发流程&#xff1a;项目内容&#xff1a;商城组件部分&#xff1a;课程所包含的知识图谱&#xff1a;章节介绍&#xff1a; 商城的界面展示&…

基于web漏洞扫描及分析系统设计_kaic

基于web漏洞扫描及分析系统设计 摘 要 随着信息技术的发展和网络应用在我国的普及&#xff0c;针对我国境内信息系统的恶意网络攻击也越来越多&#xff0c;并且随着黑客攻击技术的不断地更新&#xff0c;网络犯罪行为变得越来越难以应对&#xff0c;用户日常访问的网站是否安全…

【八大排序(六)】快排终极篇-快速排序非递归版

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:八大排序专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习排序知识   &#x1f51d;&#x1f51d; 快排非递归版 1. 前情回顾2. 快排非递归基…

A100 GPU服务器安装CUDNN教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…