抖音小程序一键获取手机号
前端代码组件

<button v-if="!isFromOrderList"class="get-phone-btn" open-type="getPhoneNumber"@getphonenumber="onGetPhoneNumber">一键获取</button>
// 获取手机号回调onGetPhoneNumber(e) {var that = this tt.login({force: true,success(res) {console.log('获取手机号回调', e)if (e.detail.errMsg === 'getPhoneNumber:ok') {// 获取成功,调用后端接口解密手机号that.decryptPhoneNumber(res.code,e.detail.iv,e.detail.encryptedData)} else {uni.showToast({title: '获取手机号失败',icon: 'none'})}},fail(res) {console.log(`login 调用失败`);},});},// 解密手机号 后端PHP进行解密async decryptPhoneNumber(code,iv,encryptedData) {try {const res = await orderApi.decryptPhone({code: code,iv: iv,encryptedData: encryptedData})if (res.code === 1 && res.data && res.data.phone) {this.phone = res.data.phone} else {throw new Error(res.msg || '获取手机号失败')}} catch (error) {console.error('解密手机号失败:', error)uni.showToast({title: error.message || '获取手机号失败',icon: 'none'})}}
后端使用的PHP去实现 思路首先通过前端的code换取sessionkey 然后通过 sessionkey解密前端手机号加密信息
/*** 获取抖音小程序手机号* @param $code* @param $iv* @param $encryptedData* @return \think\response\Json* @throws \GuzzleHttp\Exception\GuzzleException*/public function get_mobile($code, $iv, $encryptedData){$result = $this->code2Session($code);//解密$phone = openssl_decrypt(base64_decode($encryptedData, true), 'AES-128-CBC', base64_decode($result['session_key']), OPENSSL_RAW_DATA, base64_decode($iv));$phone = json_decode($phone, 1);if (isset($phone['phoneNumber']) && $phone['phoneNumber']) {return json(['code' => 1,'msg' => '获取成功','data' => ['phone' => $phone['phoneNumber']],]);} else {return json(['code' => 0,'msg' => '获取失败','data' => [],]);}}/*** 通过code换取 session_key* @param $code* @return array* @throws \GuzzleHttp\Exception\GuzzleException*/public function code2Session($code){$uri = 'https://developer.toutiao.com/api/apps/v2/jscode2session';$options = ['body' => json_encode(['appid' => config('xinghuo_mp.appid'),'secret' => config('xinghuo_mp.appsecret'),'code' => $code,'anonymous_code' => '']),'headers' => ['Content-Type' => 'application/json']];$response = (new \GuzzleHttp\Client)->post($uri, $options);$stringBody = (string)$response->getBody();$result = json_decode($stringBody, true);return ['openid' => $result['data']['openid'], 'session_key' => $result['data']['session_key']];}
相关文章:
抖音小程序一键获取手机号
前端代码组件 <button v-if"!isFromOrderList"class"get-phone-btn" open-type"getPhoneNumber"getphonenumber"onGetPhoneNumber">一键获取</button>// 获取手机号回调onGetPhoneNumber(e) {var that this tt.login({f…...
iconfont等图标托管网站上传svg显示未轮廓化解决办法
打开即时设计 即时设计 - 可实时协作的专业 UI 设计工具 导入图标后拖入画板里面,右键选择轮廓化 将图标导出...
2008-2020年各省城镇登记失业率数据
2008-2020年各省城镇登记失业率数据 1、时间:2008-2020年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区名称、年份、城镇登记失业率 4、范围:31省 5、指标说明:城镇登记失业率是指在一定时期内&…...
Linux——信号量和(环形队列消费者模型)
Linux——线程条件变量(同步)-CSDN博客 文章目录 目录 文章目录 前言 一、信号量是什么? 二、信号量 1、主要类型 2、操作 3、应用场景 三、信号量函数 1、sem_init 函数 2、sem_wait 函数 3、sem_post 函数 4、sem_destroy 函数 …...
【JOIN】关键字在MySql中的详细使用
目录 INNER JOIN(内连接) LEFT JOIN(左连接) RIGHT JOIN(右连接) FULL JOIN(全连接) 示例图形化解释JOIN的不同类型 INNER JOIN: LEFT JOIN: RIGHT J…...
渗透测试--攻击常见的Web应用
本文章咱主要讨论,常见Web应用的攻击手法,其中并不完全,因为Web应用是在太多无法囊括全部,但其中的手法思想却值得我们借鉴,所以俺在此做了记录,希望对大家有帮助!主要有以下内容: 1…...
window系统annaconda中同时安装paddle和pytorch环境
一、下载nvidia驱动 Download The Official NVIDIA Drivers | NVIDIA 查看GPU信息 nvidia-smi 二、安装cuda CUDA Toolkit 11.8 Downloads | NVIDIA Developer 按以下步骤下载cuda安装包,我使用的cuda11.8 下载后双击一路下一步安装即可。 查看cuda版本 nvcc …...
python-leetcode-简化路径
71. 简化路径 - 力扣(LeetCode) class Solution:def simplifyPath(self, path: str) -> str:# 使用栈来处理路径stack []# 分割路径,以 / 为分隔符parts path.split(/)for part in parts:if part or part .:# 空字符串或 .࿰…...
浅谈 PID 控制算法
PID 控制算法概念 在我们的生活中可能大家都没有听说过 PID 控制算法,但它可以说是无处不在,小到空调的温度控制、无人机的精准悬停、机器人运作系统,大到飞机和火箭的飞行姿态控制都有 PID 的身影。 PID 控制算法,即比例 - 积分…...
ailx10的专栏电子书(2022版)
最近整理了一下自己的知乎专栏,基于myBase和html help workshop做了一本电子书,一共20个章节,接近280M,19块9,有兴趣的同学私信我,记录了从我上学到工作这些年来的心得体会,以及学习历程&#x…...
WPS按双字段拆分工作表到独立工作簿-Excel易用宝
我们老板真是事多,他说要把这个工作表以月份和支付方式的维度,以这两个字段进行拆分工作表,而且拆分出来的表格要保存一个新的工作簿。 啥事都交给我,他还以为我有三头六臂呢,还好我有易用宝,可以轻松拆分…...
C++ Qt练习项目 日期时间数据 未完待续
个人学习笔记 新建项目 设计UI 实现组件功能 参考资料 4.7日期时间数据_哔哩哔哩_bilibili...
vim文本编辑器
vim命令的使用: [rootxxx ~]# touch aa.txt #首先创建一个文件 [rootxxx ~]# vim aa.txt #vim进入文件aa.txt进行编辑 vim是vi的升级版,具有以下三种基本模式: 输入模式(编辑模式) 点击i进入编辑模式 (说明…...
产品经理面试题总结2025【其一】
一、产品理解与定位 1、你如何理解产品经理这个角色? 作为一名互联网产品经理,我理解这个角色的核心在于成为产品愿景的制定者和执行的推动者。具体来说,产品经理是连接市场、用户和技术团队之间的桥梁,负责理解市场需求、用户痛…...
资料03:【TODOS案例】微信小程序开发bilibili
样式 抽象数据类型 页面数据绑定 事件传参...
玉米植物结构受乙烯生物合成基因 ZmACS7 的调控
摘要: 植物高度和叶片角度是玉米(Zea mays)植物结构的两个关键决定因素,与高种植密度下的抗倒伏性和冠层光合作用密切相关。这两个性状主要由几种植物激素调节。然而,乙烯在调节玉米植物结构中的机制,特别…...
C#语言的函数实现
C#语言的函数实现详解 C#是一种功能强大的编程语言,以其易于学习和强大的功能而备受欢迎。在C#中,函数(或称为方法)是构建程序的基本单位,它们可以封装特定的功能和逻辑。本文将详细讲解C#语言中函数的概念、定义、调…...
1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻
从 GPT-1 到 GPT-3.5:一路的风云变幻 人工智能的进步一直是科技领域的一个重要话题,而在自然语言处理(NLP)领域,GPT(Generative Pre-trained Transformer)系列模型的发布,标志着一个又一个技术突破。从2018年发布的 GPT-1 到2022年推出的 GPT-3.5,OpenAI 的每一次更新…...
TypeScript - 利用GPT辅助学习
TypeScript 一、基础1. 安装 TypeScript2. 创建你的第一个 TypeScript 文件3. 编译 TypeScript 代码4. 变量声明与类型注解5. 函数与类型注解6. 总结 二、进阶常用类型1. 类型别名2. 对象类型3. 类型断言4.typeof 操作符 高级类型1. 类2. 交叉类型3. 泛型与 keyof4. 索引签名类…...
VMware虚拟机迁移到阿里云
VMware虚拟机迁移到阿里云是一个涉及多个步骤的过程,具体如下: 使用阿里云的服务器迁移中心(SMC)进行P2V或V2V迁移。如果是小型应用,可以通过制作镜像文件然后上传至阿里云OSS,并基于该镜像创建ECS实例。对…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
