找回密码
 立即注册
搜索
查看: 549|回复: 0

微擎微信小程序获取手机号

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2021-8-15 16:38:29 | 显示全部楼层 |阅读模式
相关文献:
敏感数据加密数据解密算法:
https://developers.weixin.qq.com ... 6%E7%AE%97%E6%B3%95

获取手机号:
https://developers.weixin.qq.com ... getPhoneNumber.html

小程序登录:
https://developers.weixin.qq.com ... -ability/login.html

步骤:
1,小程序getPhoneNumbernumber,拿到e.detail.iv,e.detail.encryptedData,这两个参数是需要再后面解密的;
2,wx.login,拿到code;
3,用code去服务端获取sessionKey;
4,用sessionKey到服务端获取手机号

wxml
  1. <button class="weui-btn weui-btn_primary" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取用户手机号</button>
复制代码

js
  1. getPhoneNumber: function (e) {
  2.       var ivObj = e.detail.iv;
  3.       var telObj = e.detail.encryptedData;
  4.       var codeObj = "";
  5.       var that = this;
  6.       //------执行Login---------
  7.       wx.login({
  8.         success: res => {
  9.           // 先wx.login得到code
  10.           let jsCode = res.code;
  11.           // 用code 去服务端获取sessionKey
  12.           app.util.request({
  13.             'url': 'entry/wxapp/xcxsess',
  14.             'data': {
  15.               code: jsCode,
  16.             },
  17.             'cachetime': '30',
  18.             success(res) {
  19.             let sessionkey = res.data.data;
  20.               wx.request({
  21.                 url: 'https://xxxx.com/addons/小程序模块名/xcxjm.php', //接口地址
  22.                 data: {
  23.                   appid: "小程序APPID",
  24.                   sessionKey :sessionkey,
  25.                   code: jsCode,
  26.                   encryptedData: telObj,
  27.                   iv: ivObj
  28.                 },
  29.                 success: function (ressss) {
  30.                   console.log(ressss);
  31.                   var phoneObj = ressss.data.phoneNumber;
  32.                   that.setData({shoujihao:phoneObj});
  33.                   console.log("手机号=", phoneObj)
  34.                   wx.setStorage({   //存储数据并准备发送给下一页使用
  35.                     key: phoneObj,
  36.                     data: ressss.data.phoneNumber,
  37.                   })
  38.                 }
  39.               })
  40.             }
  41.           });   

  42.         }
  43.       });
  44. },
复制代码

php
在这里将php解密例子下载后,上传服务器,demo.php修改名为xcxjm.php
https://developers.weixin.qq.com ... 6%E7%AE%97%E6%B3%95

xcxjm.php
  1. <?php

  2. include_once "wxBizDataCrypt.php";


  3. $appid = isset( $_REQUEST[ 'appid' ] ) ? $_REQUEST[ 'appid' ] :'';
  4. $sessionKey = isset( $_REQUEST[ 'sessionKey' ] ) ? $_REQUEST[ 'sessionKey' ] :'';


  5. $encryptedData = isset( $_REQUEST[ 'encryptedData' ] ) ? $_REQUEST[ 'encryptedData' ] : "";
  6.       $iv = isset( $_REQUEST[ 'iv' ] ) ? $_REQUEST[ 'iv' ] :'';

  7. $pc = new WXBizDataCrypt($appid, $sessionKey);
  8. $errCode = $pc->decryptData($encryptedData, $iv, $data );

  9. if ($errCode == 0) {
  10.     print($data . "\n");
  11. } else {
  12.     print($errCode . "\n");
  13. }
复制代码

wxapp.php
新建方法
  1. public function doPageXcxsess(){
  2.                 global $_GPC, $_W;
  3.         $appid = '小程序appid';
  4.         $secret = '小程序secret';
  5.         $code=$_GPC['code'];     //微擎获取前台上传的code值
  6.         $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$secret.'&js_code='.$code.'&grant_type=authorization_code';
  7.         $info = file_get_contents($url);//get请求网址,获取数据
  8.         $json = json_decode($info);//对json数据解码
  9.         $arr = get_object_vars($json);//返回一个数组。获取$json对象中的属性,组成一个数组
  10.         $openid = $arr['openid'];
  11.         $session_key = $arr['session_key'];
  12.         return $this->result(0, 'success', $session_key);//返回给前台一个session_key
  13.         }
复制代码




下面这个参考文献也有参考价值:https://blog.csdn.net/qq_43382853/article/details/106162879

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 18:15 , Processed in 0.050409 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表