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

小程序手机号注册php,微信小程序授权获取用户手机号码

第一步:小程序通过调用wx.login()方法,来拿到用户登录凭证code。wx.login({

success:function(res){

console.log('loginCode:', res.code)

}

});

第二步:将code传给后台,后台通过登录凭证code获取 session_key 和 openid获取方法如下:用你的小程序的appid,secret,code来请求下面的api(请在后台处理)https://api.weixin.qq.com/sns/jscode2sessionappid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code在确保code没有失效的情况下

后台会获的用户的openid和session_key

第三步:用户通过getPhoneNumber组件,引导用户确认授权。拿到encryptedData和iv。

第四步:将encryptedData和iv传给后台,后台通过解密算法(https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html)将用户的手机号解析出来。

这个时候后台把接口解析的手机号返回给你,就拿到了~对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。对称解密的目标密文为 Base64_Decode(encryptedData)。对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节。对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返回。

总结:先通过小程序代码获取到code,然后将获取code传给后台,这个时候还没获取到phone,需要根据传过来的code获取到openid和session_key,然后根据这些参数appid和session_key去解密,即可获得微信信息以及手机号码。

ebccb9ee7f891c62840cd931b9d26b04.png

相关代码:// 加密数据解密算法

public function decryption(){

$xcx['app_id'] = '';

$xcx['app_secret'] = '';

$code = input('code');

$encryptedData = input('encryptedData');

$iv = input('iv');

$unionId = '';

$unifo = [];

// expires_in,openid,session_key

$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$xcx['app_id']."&secret=".$xcx['app_secret']."&js_code=".$code."&grant_type=authorization_code";

// $content = file_get_contents($url);

$content = file_get_contents_by_curl($url);

$res = object_array(json_decode($content)); //返回openid,expires_in,session_key

if(!isset($res)) return json(['code'=>1,'msg'=>'请求失败','res'=>$res,'url'=>$url,'content'=>$content,'code2'=>$code,'app_id'=>$xcx['app_id'],'secret'=>$xcx['app_secret']]);

if(isset($res['errcode'])){

return json(['code'=>1,'errmsg'=>$res['errmsg']]);

}

if(empty($res['openid'])) return json(['code'=>1,'msg'=>'获取openid错误']);

if(empty($res['session_key'])) return json(['code'=>1,'msg'=>'session_key获取失败']);

$pc = new WXBizDataCrypt($xcx['app_id'], $res['session_key']);

$errCode = $pc->decryptData($encryptedData, $iv, $data );

if ($errCode == 0) {

$arr = object_array(json_decode($data));

return json(['code'=>0,'msg'=>'解密成功','arr'=>$arr]);

} else {

return json(['code'=>1,'msg'=>'获取unionId错误','error'=>$errCode,'openid'=>$res['openid'],'app_id'=>$xcx['app_id'],'iv'=>$iv,'encryptedData'=>$encryptedData]);

}

}


http://www.taodudu.cc/news/show-8381729.html

相关文章:

  • 微信小程序怎么注册?
  • 09C++文件读取
  • 点成案例| BE-Gradient 微流控芯片用于胶质母细胞瘤的研究
  • 数字微流控生物芯片模拟界面
  • 微流控芯片建模分析技术与应用
  • 什么是微流控芯片?它是如何发展起来的?
  • 详述纸基微流控芯片的研究进展
  • 优可测推动微流控技术革新,精准助力生物医学等行业的发展
  • 简化SQL式计算之逆分组
  • PyConChina 2012 - 第二届中国Python开发者大会 上海.北京.西安.杭州.合肥.武汉.珠海 | 抢座网...
  • 高新园区云计算机大厦,合肥超猛!九区900大项目曝光,中央CBD、超算中心来了!滨湖、高新、新站彻底爆发!...
  • 【线下赛游记】2023 ICPC合肥区域赛 游记
  • 近2000万!鸿雁中标杭州地铁 9 号线一期工程公共区 LED 灯具项目
  • 用Python计算合肥地铁乘车最优乘车路线:暴力方式
  • Element UI中全部的图标以及组件
  • 小白必看的那些UI图标设计规范分享!
  • 区块链,会越来越无聊!
  • 小程序如何用data的数据控制页面展示_小程序实战之登录的原理和实现(内含福利)...
  • 边缘计算与物联网精华问答 | 边缘计算和物联网有什么关系?
  • 营养餐搭配小程序开发价值
  • 「安搭Share你问我答」你老了,如何养老?
  • 神奇瘦身食谱 调整你多余脂肪 - 生活至上,美容至尚!
  • 神奇瘦身食谱 调整你多余脂肪 - 健康程序员,至尚生活!
  • 计算机毕业设计Android家庭食谱推荐系统app(源码+系统+mysql数据库+Lw文档)
  • 域权限维持-黄金/白银票据详解
  • 什么是黄金投资及其特点
  • Kerberos的黄金票据详解
  • RTI Perftest 的大样本测试
  • 精密系统的实用RTI计算
  • 雷诺-日产-三菱汽车联盟(Renault-Nissan-Mitsubishi)旗下的联盟风险投资公司(Alliance Ventures) 领投Enevate的战略融资, 用以进一步推动应用于电动车的