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

抖音小程序一键获取手机号

前端代码组件
在这里插入图片描述

	<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']];}
http://www.lryc.cn/news/524277.html

相关文章:

  • iconfont等图标托管网站上传svg显示未轮廓化解决办法
  • 2008-2020年各省城镇登记失业率数据
  • Linux——信号量和(环形队列消费者模型)
  • 【JOIN】关键字在MySql中的详细使用
  • 渗透测试--攻击常见的Web应用
  • window系统annaconda中同时安装paddle和pytorch环境
  • python-leetcode-简化路径
  • 浅谈 PID 控制算法
  • ailx10的专栏电子书(2022版)
  • WPS按双字段拆分工作表到独立工作簿-Excel易用宝
  • C++ Qt练习项目 日期时间数据 未完待续
  • vim文本编辑器
  • 产品经理面试题总结2025【其一】
  • 资料03:【TODOS案例】微信小程序开发bilibili
  • 玉米植物结构受乙烯生物合成基因 ZmACS7 的调控
  • C#语言的函数实现
  • 1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻
  • TypeScript - 利用GPT辅助学习
  • VMware虚拟机迁移到阿里云
  • 【STM32-学习笔记-15-】MAX7219点阵屏模块
  • 高并发内存池_CentralCache(中心缓存)和PageCache(页缓存)申请内存的设计
  • elementUI Table组件实现表头吸顶效果
  • 语言模型的价值定位与技术突破:从信息处理到创新认知
  • 微信小程序使用上拉加载onReachBottom。页面拖不动。一直无法触发上拉的事件。
  • Spring Boot 快速创建项目
  • kafka学习笔记5 PLAIN认证——筑梦之路
  • 直驱式风电储能制氢仿真模型matlab/simulink
  • excel批量提取批注
  • 高性能PCIE硬件加密卡:满足大数据时代的安全需求
  • C语言小项目——通讯录