小程序开发已经是家常便饭了,当然获取手机号也是需要经常用到,今天做个记录

获取流程是,先通过前端传递过来的code,获取openid和session_key,然后拿着session_key和前端传递过来的加密信息来获取手机号信息

$appid = '';
$secret = '';
$code = ''; //前端传递过来的
$data = file_get_contents('https://api.weixin.qq.com/sns/jscode2session?appid=' . $appid . '&secret=' . $secret . '&js_code=' . $code . '&grant_type=authorization_code');
if (!empty($data)) {$data = json_decode($data, true);$openid = $data['errcode'] == 0 ? $data['openid'] : '';//$session_key = $data['session_key'];return $openid;
}

有了这些信息后,可以通过解密方法来获取手机号

private function decryptData($appid, $sessionKey, $encryptedData, $iv, &$data)
{if (strlen($sessionKey) != 24) {return -41001;}$aesKey = base64_decode($sessionKey);if (strlen($iv) != 24) {return -41002;}$aesIV = base64_decode($iv);$aesCipher = base64_decode($encryptedData);$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);$dataObj = json_decode($result);if ($dataObj == NULL) {return -41003;}if ($dataObj->watermark->appid != $appid) {return -41004;}$data = $dataObj;return 0;
}

上面方法需要传递四个参数,分别是,appid,session_key,前端的加密数据,前端的IV值,还有一个引入式变量data,方法返回一个状态码,如果状态码等于0的时候,那就是成功了,$data的数据就是手机号json,下面是一个例子:

$appid = '';
$session_key = ''; //拿上门获取的session_key
$encryptedData = ''; //前端传递
$iv = ''; //前端传递
$data = ''; //默认声明
$errCode = $this->decryptData($appid,$session_key,$encryptedData,$iv,$data);
$this->logs('phoneinfo:' . json_encode($data));
if ($errCode == 0) {$phone = $data->phoneNumber;return $phone;
}

微信小程序获取手机号和OPENID相关推荐

  1. 微信小程序获取手机号登录流程

    微信小程序获取手机号登录流程 首先前端使用wx.login 获取code wx.login({success(res) {if (res.code) {that.setData({code: res. ...

  2. 微信小程序---- 获取手机号(微信最新更新)

    微信小程序---- 获取手机号(微信最新更新) 前言:需要将 button 组件 open-type 的值设置为 getPhoneNumber,当用户点击并同意之后,可以通过 bindgetphone ...

  3. 微信小程序获取手机号登录流程(个人开发者账号不支持)

    微信小程序获取手机号登录流程 所需条件 1. 非个人开发者账号 2. AppID+AppSecret 流程思路 **注意:** 代码实现 常见问题 所需条件 1. 非个人开发者账号 获取手机号文档 这 ...

  4. uni-app微信小程序获取手机号;微信小程序获取手机号,获取到后需要进行解密;微信小程序获取手机号失败 Error:该appId没有权限

    方法1.uni-app登录加获取手机号解密-直接看此篇即可解决 微信小程序获取手机号注意点: 1.需要先登录,微信小程序登录看这篇 2.手机号获取到时加密的,需要后端解密或者前端自己解密(解密时候就会 ...

  5. 微信授权绑定手机号 java_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPhoneNumber这个组件通过button来实现(别的标签无 ...

  6. 小程序获取sessionkey_微信小程序 获取session_key和openid的实例

    微信小程序 获取session_key和openid的实例 说说获取session_key和openid的条件 1.AppID(小程序ID); 2.AppSecret(小程序密钥); 3.登录时获取c ...

  7. 微信小程序获取手机号并解密详解

    微信小程序获取手机号并解密 1 获取手机号 2 解密 2.1 获取所需数据 2.2 解密返回数据 1 获取手机号 获取手机号的过程官方文档有详细的介绍.参考官方链接 要注意的是,此功能只对非个人且完成 ...

  8. php 微信小程序获取手机号_实例讲解微信小程序获取手机号授权用户登录功能...

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写.本文主要给大家分享微信小程序获取手机号授权用户登录功能,需要的朋友参考下吧, ...

  9. java实现微信、手机号登陆_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPaDirIrkFhoneNumber这个组件通过button来 ...

  10. php7.4 微信小程序获取手机号

    第一步应该先接受获取code 然后得到sessionkey和openid 第二步 把openid返回给小程序客户端,同时把sessionkey和openid存入数据库 第三步 小程序获取手机号时把op ...

最新文章

  1. python flask表单语法_Flask框架如何使用表单
  2. 【图像超分辨率】RRSGAN: Reference-Based Super-Resolution for Remote Sensing Image
  3. UART 异步串行通信发送模块设计与实现
  4. 图论算法(二)-最短路径的Dijkstra [ 单源 ] 和Floyd[ 多源 ] 解法(JAVA )
  5. etcd部署简单说明
  6. Python + OpenCV 环境配置
  7. Ubuntu16.04装机2:安装CUDA10.2+cuDNN7.6.5
  8. java interruptedexception_如何正确的处理InterruptedException
  9. python毕业设计作品基于django框架校园网站系统毕设成品(6)开题答辩PPT
  10. html5在线加密,HTML源代码在线加密解密
  11. 求解顺序统计量的7种方法
  12. 普渡大学统计与计算机科学,普渡大学西拉法叶分校统计学
  13. C语言程序——摄氏度和华氏度之间的转换
  14. educoder——面向对象程序设计java——实验实训——实验二 - 面向对象
  15. 微信分享网页 图标不显示
  16. elasticsearch ingest node
  17. 项目十大管理之成本管理
  18. 蓝桥杯 算法提高 阮小二买彩票 Python
  19. CRC (Cyclic redundancy check) java 实现
  20. 日志易之配置日志内容黑名单

热门文章

  1. android怎么安装apk文件,apk文件怎么安装?如何安装apk文件
  2. 快收藏!最适合计算机大学生的Java毕业设计项目--高校食堂点餐系统
  3. 正确的座机号码格式_电话号码的正确写法(我就知道你不知道)
  4. 缓存框架 EhCache 使用 3
  5. python zemax_最新Python中文版发布,跨界程序员零压力学Python之道!(附下载)
  6. Java泛型对象的实例化
  7. unity NGUI图文混排
  8. 分形之——谢尔宾斯基三角形
  9. 从三本院校到斩获字节跳动后端研发Offer
  10. 下载正版Origin Pro 2022 教程 及 如何 激 活