微信小程序获取手机号和openid

小程序通过wx.login组件会返回一个code,这个code用来获得用户的openid

小程序写法为:

wx.login({success (res) {if (res.code) {//发起网络请求wx.request({url: 'https://example.com/onLogin',// 后台给的请求地址data: {code: res.code}})} else {console.log('登录失败!' + res.errMsg)}}
})

 后端通过以下代码可以获得openid(参考文档:获取插件用户openpid | 微信开放文档)

<?php
public function getopenid(){$js_code = input('post.js_code');//小程序传来的code值$appid = '';//自己小程序的appid$appSecret = '';// 自己小程序的$appSecret$wxUrl = 'https://api.weixin.qq.com/sns/jscode2sessionappid=%s&secret=%s&js_code=%s&grant_type=authorization_code';$getUrl = sprintf($wxUrl, $appid, $appSecret, $js_code);//把appid,appsecret,code拼 接到url里$result = $this->curl_get($getUrl);//请求拼接好的url$wxResult = json_decode($result, true);return wxResult;
}
public function curl_get($url, &$httpCode = 0) {$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不做证书校验,部署在linux环境下请改为truecurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);$file_contents = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);return $file_contents;}

使用手机号快速验证组件,获得的code用来请求地址获得手机号。

这个是手机号快速验证组件

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>Page({getPhoneNumber (e) {console.log(e.detail.code)  // 动态令牌console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)console.log(e.detail.errno)  // 错误码(失败时返回)}
})

具体返回信息为:

 后端拿到code后获取手机号的代码为(参考文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html):

public function getphone(){$js_code = input('post.phone_code');//小程序传来的code值$appid = '';//小程序的appid$appSecret = '';// 小程序的$appSecret$access_token = $this->getAccessToken($appid, $appSecret);if($access_token !== false){$data = array('code' => $js_code);$result=$this->getUserPhoneNumber("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=".$access_token,$data);var_dump($result);}}
public function getAccessToken($appid,$secret){$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$data = curl_exec($ch);if(curl_errno($ch)){echo '<br>Curl error: ' . curl_error($ch)."<br>";return curl_error($ch);}curl_close($ch);$result = json_decode($data,true);if(isset($result["access_token"])){return $result["access_token"];}else{echo "<br>getAccessToken Failed: ".$result["errcode"].";".$result["errmsg"]."<br>";return false;}}
public function getUserPhoneNumber($remote_server, $data) {$json_data = json_encode($data);$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $remote_server);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);$data = curl_exec($ch);if(curl_errno($ch)){echo '<br>Curl error: ' . curl_error($ch)."<br>";return curl_error($ch);}curl_close($ch);//$result = json_decode($data,true);//var_dump($result);return $data;}

如还有问题,可以留言联系,处理了一晚上的bug就记录到这里啦

参考官方文档:

小程序端需要写的:

手机号快速验证组件 | 微信开放文档

php后台需要写的:

手机号验证 | 微信开放文档

获取接口调用凭据:

获取接口调用凭据 | 微信开放文档

 

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

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

相关文章

游戏录屏怎么录自己的声音?看这篇就够了!

在游戏过程中&#xff0c;录制屏幕是很重要的&#xff0c;它可以帮助玩家记录游戏中的精彩瞬间&#xff0c;与其他玩家分享游戏的乐趣。同时&#xff0c;录制自己的声音也可以为游戏视频增色添彩&#xff0c;让玩家更好地沉浸在游戏的氛围中。可是游戏录屏怎么录自己的声音呢&a…

vue2 集成 Onlyoffice

缘起于进行了一次在线 Office 解决方案的调研&#xff0c;对比了 Office365、可道云、WPS Office、PageOffice 等厂商&#xff0c;最终敲定了使用 Onlyoffice&#xff0c;故整理了一份 Onlyoffice 从零开始系列教程&#xff0c;这是第一篇。 一、Onlyoffice 是什么&#xff1f…

视频标注的两个主要方法

视频标注技术 单一图像法 在自动化工具面世之前&#xff0c;视频标注效率不高。各公司使用单一图像法提取视频中的所有帧&#xff0c;然后使用标准图像标注技术将它们作为图像来标注。在30fps的视频中&#xff0c;每分钟有1800帧。这个过程没有利用视频标注的优势&#xff0c;…

信钰证券:股票的中线和年线?

股票商场一直是许多人注重的焦点。关于股票出资者来说&#xff0c;技巧和战略很重要。而股票的中线和年线便是股票出资中最基本的技术目标之一。这两个目标可以帮忙股民精确判别价格走势&#xff0c;拟定出资方案。在此我们将从几个角度分析股票的中线和年线的重要性。 什么是…

spring java 动态获取consul K/V

spring java 动态获取consul K/V 1.springConsul配置kv路径 spring:cloud:consul:enabled: ${CONSUL_ENABLED:true}host: ${CONSUL_HOST:localhost}port: ${CONSUL_PORT:8500}config:prefix: ${CONSUL_CONFIG_PREFIX:config} #consul kv前缀fail-fast: ${CONFIG_FAIL_FAST:fa…

【学习笔记】RabbitMQ04:延迟队列的原理以及实现代码

参考资料 RabbitMQ官方网站RabbitMQ官方文档噼咔噼咔-动力节点教程 文章目录 七、延迟队列7.1 什么是延迟队列7.2 延迟队列的解决方案7.2.1 定时任务7.2.2 **被动取消**7.2.3 JDK的延迟队列7.2.3 采用消息中间件&#xff08;rabbitMQ7.2.3.1 适用专门优化后的死信队列实现延迟队…

软考高级系统架构设计师系列之:数学与经济管理

软考高级系统架构设计师系列之:数学与经济管理 一、数学与经济管理二、图论应用-最小生成树三、图论应用-最短路径四、图论应用-网络与最大流量五、运筹方法-线性规划六、运筹方法-动态规划七、运筹方法-转移矩阵八、运筹方法-排队论九、运筹方法-决策-不确定决策十、运筹方法…

Linux常见基本指令合集及其效果展示

Linux基本命令 文章目录 Linux基本命令1. whoami2. who3. clear4. pwd5. 查看文件信息5.0 什么是文件5.1 ls5.2 ls -l5.3 ls -a5.4 ls -a -l 6. 补充知识&#xff1a;对于Linux系统目录的认知6.1 什么是路径 7. cd8. touch9. mkdir10. rmdir11. rm12. man13. cp14. mv15. nano1…

魔行观察》一款免费的品牌/商业地产数据查询平台

给大家推荐一款免费的商业数据查询平台"魔行观察"&#xff0c;可免费查询品牌&#xff0c;品牌门店&#xff0c;商场&#xff0c;全国小区&#xff0c;写字楼等相关信息&#xff0c;更多数据敬请期待 小程序搜索&#xff1a;魔行观察 即可使用

Android组件通信——广播机制:BroadcastReceiver(二十九)

1. BroadcastReceiver 1.1 知识点 &#xff08;1&#xff09;掌握广播接收器的主要作用及基本实现&#xff1b; &#xff08;2&#xff09;可以使用广播启动Service&#xff1b; &#xff08;3&#xff09;理解闹钟服务的使用&#xff1b; 1.2 具体内容 广播这个名词大家…

信创办公–基于WPS的Word最佳实践系列 (图文环绕方式)

信创办公–基于WPS的Word最佳实践系列 &#xff08;图文环绕方式&#xff09; 目录 应用背景操作步骤1、 打开布局选项中图文环绕方式的方法2、 图文环绕三大类型 应用背景 在Word中&#xff0c;对文字和图片进行排版时&#xff0c;采用各种不同的图片与文字组合效果能够使页面…

Android 自定义view 圆形进度条

Android 自定义view 圆形进度条 前言一、码前分析二、开码1.画笔2.弧度3.圆弧的位置4.暴露给外部设置进度条的方法三、使用四、完整代码 总结 前言 先来看看效果&#xff0c;大概要实现这么一个圆形的进度条 一、码前分析 要实现这么一个进度条的效果&#xff0c;实际上是要画…

cbu和无cc的shiro反序列化

前置知识 学习CommonsBeanutils之前应该知道 javaBean&#xff0c;可以看《Java简单特性》也可以看这里有关BeanComparator的介绍TemplatesImpl gadget&#xff0c;前两个方法是public TemplatesImpl#getOutputProperties() -> TemplatesImpl#newTransformer() -> Tem…

【前端学习】—ES6新增的方法有哪些(十五)

【前端学习】—ES6新增的方法有哪些&#xff08;十五&#xff09; 一 、ES6中新增的方法 &#xff08;一&#xff09;、Object.is() //用于判断两个值/数据类型是否相等/* 特点&#xff1a;不仅可以对值类型进行正常处理&#xff0c;对象类型的值也可以处理对于特殊的值NaN 也…

第七版教材下的PMP考试有多难?

考过了几次就没多难了&#xff0c;主要是看考纲&#xff0c;其中的难点就是敏捷的内容多了不少&#xff0c;包含在考纲的三大模块中&#xff0c;pmp考试没有专门的敏捷教材&#xff0c;需要自己去找资料备考。 第七版教材主要内容&#xff1a; 考纲三大模块分析&#xff1a; …

10-k8s-身份认证与鉴权

文章目录 一、ServiceAccount介绍二、ServiceAccount相关的资源对象三、dashboard空间示例 一、ServiceAccount介绍 ServiceAccount&#xff08;服务账户&#xff09;概念介绍 1&#xff09;ServiceAccount是Kubernetes集群中的一种资源对象&#xff0c;用于为Pod或其他资源提供…

【C++】多态 -- 详解

⚪前言 声明一下&#xff0c;下面的代码和解释都是在 VS2019 下的 X86 程序中进行的&#xff0c;涉及的指针都是 4 bytes。如果要其他平台下&#xff0c;部分代码需要改动。比如&#xff1a;如果是 X64 程序&#xff0c;则需要考虑指针是 8 bytes 问题等等。其它编译环境下&…

2023年中国有创呼吸机产量、需求量及行业市场规模分析[图]

有创呼吸机主要是通过气管插管或者气管切开&#xff0c;然后通过管道连接在呼吸机上&#xff0c;为患者提供呼吸支持&#xff0c;主要针对的患者是昏迷的&#xff0c;无自主呼吸或不能耐受无创呼吸机的患者。 有创呼吸机是高端医疗装备&#xff0c;设计、生产和临床验证都必须经…

机器学习笔记 - 3D 对象跟踪极简概述

一、简述 大多数对象跟踪应用程序都是 2D 的。但现实世界是 3D 的,无论您是跟踪汽车、人、直升机、导弹,还是进行增强现实,您都需要使用 3D。在 CVPR 2022(计算机视觉和模式识别)会议上,已经出现了大量3D目标检测论文。 二、什么是 3D 对象跟踪? 对象跟踪是指随着时间的…

【JVM面试】从JDK7 到 JDK8, JVM为啥用元空间替换永久代?

系列文章目录 【JVM系列】第一章 运行时数据区 【面试】第二章 从JDK7 到 JDK8, JVM为啥用元空间替换永久代&#xff1f; 大家好&#xff0c;我是青花。拥有多项发明专利&#xff08;都是关于商品、广告等推荐产品&#xff09;。对广告、Web全栈以及Java生态微服务拥有自己独到…