小程序+Php获取微信手机号

news2024/11/27 1:38:55

PHP怎么配合微信小程序实现获取手机号码

当前通过获取session_key与encryptedData与iv进行解密获取手机号的方法已经不行了,只能通过点击按钮来实现获取微信用户的手机号

1:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphonenumber 事件回调获取到动态令牌code,然后把code传到开发者后台,并在开发者后台调用微信后台提供的 phonenumber.getPhoneNumber 接口,消费code来换取用户手机号。每个code有效期为5分钟,且只能消费一次。

注:getPhoneNumber 返回的 code 与 wx.login 返回的 code 作用是不一样的,不能混用。

代码如下:

wxss代码:

 <button type="primary"  bindgetphonenumber="onGetPhoneNumber" open-type="getPhoneNumber">获取</button>

复制

js代码:

onGetPhoneNumber (e){
    if(e.detail.code==null||e.detail.code==""){
      wx.showToast({
        title: '请允许获取您的手机号',

        'icon':'none',

      })

      return;

    }else{
      wx.request({
        data: {
          code: e.detail.code,

          time:config.dt,

          openid: storage.get('openid')

        },

        header: {'content-type': 'application/json'},

        url: config.api+'/getWxPhone', 

        success: function(res) {
          console.log(res.data.data.phone);

        }

      })

    }

          

  },

复制

2:后端PHP代码【此处我用的是tp5】根据传过来的动态令牌code去获取手机号

/**
 * @param Request $request
 * 获取手机号码
 */
public function getWxPhone(Request $request){

    $params = $request::only(['code']);
    
    $url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.config("appid").'&secret='.config("appsecret");

    $tmptoken = json_decode(curlGet($url_get),true);

    $token = $tmptoken['access_token'];
    
    $url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=".$token;

    $data['code']=$params['code'];

    $info = Post(json_encode($data),$url);

    $tmpinfo = json_decode($info,true);
    
    $code = $tmpinfo['errcode'];
    
    $phoneNumber = ""; 
    $phoneNumber = $tmpinfo['phone_info']['phoneNumber'];
    
    if($code == '0'){
        
        self::returnMsg(Error::SUCCESS, '获取手机号码成功',['phone'=>$phoneNumber]);
    }else{
        
        self::returnMsg(Error::FAILED, '获取手机号码失败',['']);
    }
    
}

复制

附带函数:

function Post($curlPost, $url, $ssl = false)
{
    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_NOBODY, true);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    if (!$ssl) {
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    }
    $return_str = curl_exec($curl);
    curl_close($curl);
    return $return_str;
}

复制

可能出现的错误:errcode“:47001

问题所在:

PHP怎么配合微信小程序实现获取手机号码

这里肯定是忘记用json_encode

除了这个问题,某些大聪明娃喜欢把

https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=".$token 

这里的access_token变成data里边的参数,这时候就出现了access_token过期的问题。

一切问题来源于没有好好看官方文档

因为你如果将access_token当做参数,接口就变成了用两次access_token(access_token过期或无效)。

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

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

相关文章

如何开始学习量子机器学习

一、关于量子计算 这是我关于量子机器学习&#xff08;QML&#xff09;的第二篇文章&#xff0c;这是第一篇&#xff0c;关于为什么你应该开始学习QML。 开始研究量子机器学习很困难&#xff0c;因为我不知道我需要了解多少量子力学和计算知识。我在101年上大学时上了量子力学2…

【计算机网络-自顶向下方法】应用层(SMTP、POP3、DNS)

目录 1. Electronic Mail电子邮件应用画像1.1 电子邮件系统1.2 邮件报文格式1.3 邮件访问 2. DNS&#xff08;Domain Name System&#xff09;2.1 DNS提供的服务2.2 DNS工作机理2.3 DNS资源记录2.4 DNS协议&#xff0c;报文2.5 小结 1. Electronic Mail 电子邮件应用画像 应用…

操作系统备考学习 day7 (2.3.4 ~ 2.3.5)

操作系统备考学习 day7 第二章 进程与线程2.3 同步与互斥2.3.4 信号量 用信号量实现进程互斥、同步、前驱关系信号量机制实现进程互斥信号量机制实现进程同步信号量机制实现前驱关系 2.3.5 经典同步问题生产者-消费者问题多生产者和多消费者模型抽烟者问题读者-写者问题哲学家进…

挑选一款优秀的Web端项目管理软件

Web端的项目管理软件哪个好用&#xff1f;Zoho Projects是一款本土化成熟的国外项目管理软件。选择Zoho Projects最重要的原因除了项目管理工具的基本能力和高级能力它都基本具备、操作上更符合习惯之外&#xff0c;还值得一提的是拥有很多自定义配置的能力&#xff0c;满足我们…

FPGA实现HDMI输入转SDI视频输出,提供4套工程源码和技术支持

目录 1、前言免责声明 2、我目前已有的SDI编解码方案3、设计思路框架核模块解析设计框图IT6802解码芯片配置及采集ADV7611解码芯片配置及采集silicon9011解码芯片配置及采集纯verilog的HDMI 解码模块RGB888转YUV422SPMTE编码SDI模式图像缓存SPMTE SDIGTXGV8500 4、vivado工程1-…

CLIP与DINOv2的图像相似度对比

在计算机视觉领域有两个主要的自监督模型:CLIP和DINOv2。CLIP彻底改变了图像理解并且成为图片和文字之间的桥梁&#xff0c;而DINOv2带来了一种新的自监督学习方法。 在本文中&#xff0c;我们将探讨CLIP和DINOv2的优势和它们直接微妙的差别。我们的目标是发现哪些模型在图像相…

PostgreSQL ash —— pgsentinel插件 学习与踩坑记录

零、 注意事项 测试发现&#xff0c;pgsentinel插件在pg_active_session_history视图记录条数较多时&#xff0c;存在严重的内存占用问题&#xff0c;群里的其他朋友反馈还可能存在严重的内存泄漏问题。本文仅用于学习和测试&#xff0c;未用于生产环境。 设置 pgsentinel_ash.…

Android平台实现lottie动画

1、lottie动画简介 Lottie 是一个应用十分广泛动画库&#xff0c;适用于Android、iOS、Web、ReactNative、Windows的库&#xff0c;它解析了用Bodymovin导出为json的Adobe After Effects动画&#xff0c;并在移动和网络上进行了原生渲染。它提供了一套完整得从AE到各个终端的…

c++ 学习 之 继承中 父类子类构造函数和析构函数的调用顺序

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std;// 继承中的对象模型class Base { public:Base(){cout << "Base 的构造函数 " << endl;}~Base(){cout << "Base 的析构函数 " << endl;} };clas…

2023年【通信安全员ABC证】找解析及通信安全员ABC证考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 通信安全员ABC证找解析参考答案及通信安全员ABC证考试试题解析是安全生产模拟考试一点通题库老师及通信安全员ABC证操作证已考过的学员汇总&#xff0c;相对有效帮助通信安全员ABC证考试总结学员顺利通过考试。 1、【…

业务平台为测试带来的挑战

“业务平台”是指 中间平台&#xff0c;其上游有底层系统支撑&#xff0c;其下游有客户群体。因为平台下游承接大量客户群体&#xff0c;客户对应用的行为极其敏感&#xff0c;一些小故障比如闪屏、按钮失灵&#xff0c;落数失败会有很大概率引起客诉。 客诉对公司整体的影响 …

山体滑坡监测预警系统

在面对自然灾害和地质灾害的严峻挑战时&#xff0c;人们对于科技的需求和依赖更加强烈。山体滑坡&#xff0c;作为一种常见的地质灾害&#xff0c;其不可预测性和潜在的巨大破坏力令人深感忧虑。然而&#xff0c;随着山体滑坡监测预警系统的出现&#xff0c;人们有了一个强有力…

【计算机视觉 05】YOLO论文讲解:V1-V7

https://ai.deepshare.net/live_pc/l_63243a65e4b050af23b79338 Part1.目标检测与YOLO系列 1. 目标检测任务及发展脉络 2. YOLO的发展史 Anchors Base原理&#xff1a; Part2.YOLOV1-V3 3. YOLO V1的网络结构 4. YOLO V3的网络结构与实验结果 Part3.YOLO的进化 5. YOLO V4的网络…

Python实现收发邮件

在实际开发中&#xff0c;当你收到一个需求的时候&#xff0c;比如要做一个「收发邮件」的功能。 如果你完全没有印象&#xff0c;没有思路&#xff0c;可以直接 Google 搜索的。 因为我们不可能对每个知识点都了解&#xff0c;不了解不可耻&#xff0c;但要懂得怎么去找资料…

用全栈智能,联想如何“零故障”支持亚运会?

作者 | 曾响铃 文 | 响铃说 1912年&#xff0c;电子计时器首次应用&#xff0c;1936年&#xff0c;体育赛事首次在电视上播出&#xff0c;1972年计算机首次进入人类赛事&#xff0c;1996年互联网技术大范围应用&#xff0c;随后3G网络、3D技术、VR技术……以奥运会为代表&…

Domain Enhanced Arbitrary Image Style Transfer via Contrastive Learning

ABSTRACT 在这项工作中&#xff0c;我们使用一种新颖的风格特征表示学习方法来解决任意图像风格转移的挑战性问题。合适的风格表示作为图像风格化任务的关键组成部分&#xff0c;对于获得满意的结果至关重要。 现有的基于深度神经网络的方法在内容特征的Gram矩阵等二阶统计量…

Linux——指令初识(二)

Linux下基本指令 前言一、时间相关的指令二、Cal指令三、find指令四、grep指令五、sort指令六、uniq指令七、.zip/unzip指令八、.tar指令九、uname –r指令十、重要的几个热键[Tab],[ctrl]-c, [ctrl]-d十一、关机总结 前言 linux的学习开始啦&#xff01; 今天我们继续来认识指…

选择适合普通公司的项目管理软件

不管是打工人还是学生党都适合使用Zoho Projects项目管理软件。利用项目概览功能&#xff0c;将整体项目尽收眼底&#xff0c;作为项目管理者&#xff0c;项目日程、进度都可见&#xff0c;Zoho Projects项目管理APP助推项目每一环节的进展&#xff0c;更便于管理者设计项目的下…

基于Springboot实现校园新闻网站管理系统演示【项目源码+论文说明】分享

基于Springboot实现校园新闻网站管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个校园新闻网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述校…

基于Springboot实现网上商城管理系统演示【项目源码+论文说明】分享

基于Springboot的网上商城管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;网上商城购物系统当然也不能排除在外。网上商城购物系统是以实际运用为开发背景&…