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

文章目录

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

大体流程是这样的:

  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.niftyadmin.cn/n/438859.html

相关文章

基于JavaSwing的图书管理系统

文章目录 项目介绍主要功能截图:登录注册管理员端图书信息管理图书类型管理添加图书类型读者类型管理图书借阅管理超级管理员个人信息修改用户端图书查询借阅借阅归还信息管理个人信息管理部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创…

Nodejs六、数据库操作

零、文章目录 Nodejs六、数据库操作 1、MYSQL数据库 MYSQL相关知识请参考MYSQL基础 2、在项目中操作 MySQL &#xff08;1&#xff09;操作数据库的步骤 安装操作 MySQL 数据库的第三方模块&#xff08;mysql&#xff09;通过 mysql 模块连接到 MySQL 数据库通过 mysql 模…

微服务 springcloud 08.zuul框架,API网关,整合ribbon和hystrix框架

01.zuul是作为springcloud中的一个网关框架来使用的。 zuul API 网关&#xff0c;为微服务应用提供统一的对外访问接口。 zuul 还提供过滤器&#xff0c;对所有微服务提供统一的请求校验。 在项目中的位置&#xff1a; 02.新建 sp11-zuul 项目 03.pom.xml 需要添加 sp01-com…

ESP32(Micro Python) LVGL 传感器数值显示

本程序用于显示SR04超声波传感器和BMP280气压温度传感器的读数。由于高度数值类型不符合要求&#xff0c;BMP280改为显示气压和温度值。气压值分两部分显示&#xff0c;分别为千帕值-100&#xff08;避免超出表盘显示范围&#xff09;和千帕值的两位小数。由于标签不能显示动态…

VB+ACCESS电脑租赁系统设计(源代码+系统)

本系统结合电脑租赁公司实际的业务流程,经过实际的需求分析,采用功能强大的可视化编程语言Visual Basic 6.0作为开发工具而开发出来的单机版电脑租赁管理系统。 整个系统从界面友好、操作简单、实用的要求出发,实现了电脑基本信息、电脑租赁信息、电脑归还信息、客户信息等…

Hive 库表相关操作

1、Hive内部表和外部表 1.内部表&#xff1a;未被external修饰&#xff1b;外部表&#xff1a;被external修饰。 区别&#xff1a; &#xff08;1&#xff09;内部表数据由Hive自身管理&#xff0c;外部表数据由HDFS管理&#xff1b; &#xff08;2&#xff09;内部表数据存…

开发一个跑腿APP需要多少钱?告诉你真相

在这篇文章中&#xff0c;我将回答这个问题并向您展示开发跑腿APP的成本和因素。如果您正在考虑开发一个跑腿APP&#xff0c;那么请继续阅读。 跑腿APP开发成本 开发一个跑腿APP的成本因许多因素而异。以下是一些主要的因素&#xff1a; 功能&#xff1a;APP所需的功能数量和…

【Dart】Dart学习(八)泛型

泛型 如果你查看数组的 API 文档&#xff0c;你会发现数组 List 的实际类型为 List<E>。 <…> 符号表示数组是一个 泛型&#xff08;或 参数化类型&#xff09; 通常 使用一个字母来代表类型参数&#xff0c;比如 E、T、S、K 和 V 等等。 为什么使用泛型&#xff…