uniapp微信小程序开发测试获取手机号码

先申请测试号
注意认证但是没有完全认证不要试测试号解密如下
总结我自己的两大坑
1.官网的WXBizDataCrypt需要导入crypto要提前下载但是试了很多次没有效果重新编写这个。将crypto库换成crypto-js库
2.我一直在尝试用下有下面这个界面的测试号不行获取不到用户的code还是啥忘记了s在这里插入图片描述在这里插入图片描述
新建WXBizDataCrypt.js官网也有也可以直接负责下面的内容

import CryptoJS from 'crypto-js';class WXBizDataCrypt {constructor(appId, sessionKey) {this.appId = appId;this.sessionKey = sessionKey;}decryptData(encryptedData, iv) {// 确保 encryptedData 和 iv 都是 Base64 编码的字符串const sessionKey = CryptoJS.enc.Base64.parse(this.sessionKey);const encryptedBuffer = CryptoJS.enc.Base64.parse(encryptedData);const ivBuffer = CryptoJS.enc.Base64.parse(iv);try {// 使用 AES 解密const decrypted = CryptoJS.AES.decrypt({ ciphertext: encryptedBuffer },sessionKey,{iv: ivBuffer,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7,});// 将解密后的数据转换为 UTF-8 字符串const decoded = decrypted.toString(CryptoJS.enc.Utf8);// 解析 JSON 数据const result = JSON.parse(decoded);// 检查解密结果中的 App IDif (result.watermark.appid !== this.appId) {throw new Error('Illegal Buffer: App ID mismatch');}return result;} catch (err) {console.error('解密失败', err);throw new Error('Illegal Buffer: ' + err.message);}}
}export default WXBizDataCrypt;

npm 下载 crypto-js:将node_modules中 crypto-js文件夹中的 crypto-js.js复制到WXBizDataCrypt同级目录
在这里插入图片描述
接下来在生成按钮

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber"><view class="wx_text">微信授权登录</view>
</button>

接下来在第一张图片中的appid与AppSecret(小程序密钥)复制下来

getPhoneNumber(e) {uni.login({provider: 'weixin', // 使用微信登录success: (res) => {uni.request({url: 'https://api.weixin.qq.com/sns/jscode2session',method: 'GET',data: {appid: "appid自己的",secret: "AppSecret(小程序密钥)复制下来",js_code: res.code, // wx.login 登录成功后的code  grant_type: 'authorization_code',},success: (res) => {console.log('Request success:', res);if (res.data && res.data.session_key) {let pc = new WXBizDataCrypt('appid自己的', res.data.session_key);try {let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);console.log('手机号码信息', data);} catch (err) {console.error('解密失败', err);}} else {console.error('未能获取 session_key:', res);}},fail: (err) => {console.error('Request failed:', err);}});},fail: (err) => {console.error('Login failed:', err);}});}

简写的方法

getPhoneNumber(e) {console.log(e)// 用户同意授权,拿到code去获取手机号uni.login({provider: 'weixin', //使用微信登录success: (res) => {uni.request({url: 'https://api.weixin.qq.com/sns/jscode2session',method: 'GET',data: {appid:"appid自己的",secret:"ppSecret(小程序密钥)复制下来",js_code: res.code, //wx.login 登录成功后的code  grant_type: 'authorization_code',},success: (res) => {let pc = new WXBizDataCrypt('appid自己的', res.data.session_key);try {let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);console.log('手机号码信息', data);} catch (err) {console.error('解密失败', err);}}});}})}

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

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

相关文章

【Unity编辑器扩展】SpriteAltas资源一键转换为TMP_SpriteAsset或Sprite图集

【Unity编辑器扩展】艺术字/自定义图片字体/TextMeshPro艺术字生成工具_unity 艺术字-CSDN博客 博文工具源码见GF_X自动化游戏开发框架&#xff1a;GitHub - sunsvip/GF_X: Unity GameFramework HybridCLR&#xff0c;Includes several automated editor extension tools, an …

【时间盒子】-【3.新建项目】创建元服务工程,选择默认模板Empty Ability

一、新建项目 1、打开DevEco Studio >>文件>>新建>>新建项目&#xff0c;选择元服务 Atomic Service>>默认模板Empty Ability。 2、设置元服务的工程名称、Bundle name等&#xff0c;模型选Stage&#xff0c;语言是ArkTS&#xff0c;支持的设备类型只…

Web安全:SQL注入实战测试.(扫描 + 测试)

Web安全&#xff1a;SQL注入实战测试. SQL注入就是 有些恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容中&#xff0c;同时程序的本身对用户输入的内容过于相信&#xff0c;没有对用户插入的SQL语句进行任何的过滤&#xff0c;从而直接被SQL语句直接被服务端执行&am…

【Python】3.基础语法(3)函数

文章目录 1.函数2.语法格式3.函数参数4. 函数返回值5. 变量作用域6.函数执行过程7. 链式调用8.嵌套调用9. 函数递归10. 参数默认值11. 关键字参数 1.函数 编程中的函数, 是一段 可以被重复使用的代码片段。 代码示例: 求数列的和, 不使用函数 # 1. 求 1 - 100 的和 sum 0 f…

“立创EDA专业版”笔记

目录 二、立创EDA专业版 2.0 整体功能 2.0.1 快捷键 2.1 右侧功能栏 2.1.1 过滤 2.2 PCB设计 2.2.1 切换亮度 2.2.2 偏移 2.2.3 单位切换 2.2.4 检查DRC 2.2.5 重新铺铜 2.2.6 布线 2.2.7 锁定 2.2.8 “过滤”设置锁定 2.3 上方菜单栏 2.3.1 保存文件 2.4 元件…

安卓(Android)平台上的MVVM架构:关键知识点、优劣分析及实践示例

​ 一、安卓MVVM架构核心知识点 1.1、架构组成 1.1.1、Model层 承载业务逻辑与数据实体&#xff0c;独立于UI并与ViewModel进行交互&#xff0c;实现数据获取与处理功能。 1.1.2、View层 负责用户界面展示&#xff0c;借助Android XML布局文件及Activity/Fragment等组件&a…

Java学习第六天

Java进阶知识面向对象 static&#xff1a;是静态的意思&#xff0c;可以修饰成员变量&#xff0c;表示该成员变量在内存中只存储一份&#xff0c;可以被共享访问。 静态成员变量&#xff08;有static修饰&#xff0c;属于类&#xff0c;内存中加载一次&#xff09;&#xff1a…

网络安全-安全渗透简介和安全渗透环境准备

文章目录 前言1. 安全渗透简介1.1 什么是安全渗透&#xff1f;1.2 安全渗透所需的工具1.3 渗透测试流程 2. 使用 Kali Linux 进行安全渗透2.1 下载ISO镜像2.2 下载VMware Workstaion软件2.3 Kali Linux简介2.4 准备Kali Linux环境2.5 Kali Linux初始配置2.6 VIM鼠标右键无法粘贴…

从汇编层看64位程序运行——likely提示编译器的优化案例和底层实现分析

大纲 代码分析with_attributes::powno_attributes::pow分析 我们在《Modern C——使用分支预测优化代码性能》一文中介绍了likely提示编译器进行编译优化&#xff0c;但是我们又讲了最终优化不是对分支顺序的调换&#xff0c;那么它到底做了什么样的优化&#xff0c;让整体性能…

Temu、Shein半托管vs全托管?养号测评怎么整?

2024年&#xff0c;跨境电商的市场风向又变了&#xff01;1月4日&#xff0c;阿里旗下的速卖通推出半托管模式&#xff0c;通过免佣金和现金补贴吸引卖家&#xff1b;同月&#xff0c;拼多多的Temu也在美国上线了半托管服务&#xff0c;TikTok Shop和SHEIN紧随其后。这给才流行…

Vue学习笔记 二

4、Vue基础扩展 4.1 插槽 组件的最大特性就是复用性,而用好插槽能大大提高组件的可复用能力在Vue中插槽是很重要的存在,通过插槽,我们可以把父组件中指定的DOM作用到子组件的任意位置,后面我们坐项目用到的组件库比如element-ui,vant-ui都频繁用到的插槽,Vue的插槽主要有…

MySQL:简述多版本并发控制MVCC

一、MVCC的概念 1、MVCC 数据库并发场景有三种&#xff0c;分别为&#xff1a; &#xff08;1&#xff09;读读&#xff1a;不存在任何问题&#xff0c;也不需要并发控制。 &#xff08;2&#xff09;读写&#xff1a;有线程安全问题&#xff0c;可能会造成事务隔离性问题&am…

最新!yolov10+deepsort的目标跟踪实现

目录 yolov10介绍——实时端到端物体检测 概述 主要功能 型号 性能 方法 一致的双重任务分配&#xff0c;实现无 NMS 培训 效率-精度驱动的整体模型设计 提高效率 精度提升 实验和结果 比较 deepsort介绍&#xff1a; yolov10结合deepsort实现目标跟踪 效果展示…

.NET周刊【9月第1期 2024-09-01】

国内文章 【音视频通话】使用asp.net core 8vue3 实现高效音视频通话 https://www.cnblogs.com/1996-Chinese-Chen/p/18384394 该文章描述了使用SRS实现音视频通话和共享桌面的经验。从最初使用nginx的RTMP到研究SRS和ZLMediaKit的过程&#xff0c;再到最终实现功能的详细步…

TF | SD 卡出现无法删除的文件,乱码文件该如何处理 macOS

TF | SD 卡出现无法删除的文件&#xff0c;乱码文件该如何处理 macOS 一、问题描述 最近手头有张用在 Miyoo 掌机上的游戏 TF 卡&#xff0c;在macOS 系统下在回收站中出现了几个特殊文件名的文件&#xff0c;始终无法删除。 二、试着解决 我试过了网上的所有方法都无法删除…

RuoYi-Cloud 部署与配置 [CentOS7]

静态IP设置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.130 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…

Electron桌面应用与文件路径处理:从Git、SourceTree到TortoiseGit的安装与配置

更多内容前往个人网站&#xff1a;孔乙己大叔 在开发Electron桌面应用程序时&#xff0c;正确处理文件路径是一个至关重要的环节。特别是当涉及到需要调用外部程序&#xff08;如Git、SourceTree或TortoiseGit&#xff09;时&#xff0c;确保这些程序安装在正确的位置&#xff…

@Tanstack/vue-query 的使用介绍

Tanstack/vue-query 的使用介绍 前言 在今年的vue conf 会议上&#xff0c;提到了vue-query这个库&#xff0c;这里对它的基本使用做一个介绍。 会议资料地址&#xff1a; https://vueconf.cn/ Tanstack-query的前身是react-query&#xff0c;是一个本地的服务端状态管理的库…

3.6 逻辑运算

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

wpf prism 《3》 弹窗 IOC

传统的弹窗 这种耦合度高 new 窗体() . Show(); new 窗体() . ShowDialog(); 利用Prism 自动的 IOC 弹窗的 必须 必须 必须 页面控件 弹窗的 必须 必须 必须 页面控件 弹窗的 必须 必须 必须 页面控件 弹窗的 必须 必须 必须 页面控件 弹窗的 必须 必须 必须 页面控件 》》否…