Thinkphp5微信小程序获取用户信息接口的实例详解!(干货)(小程序获取用户信息接口调整)

Thinkphp5微信小程序获取用户信息接口的实例详解!(干货)(小程序获取用户信息接口调整)

微信小程序

用Thinkphp5微信小程序如何获取用户信息接口。

话不多说直接上实例代码!

首先在官网下载示例代码, 选php的,

这里有个坑

官方的php文件,编码是UTF-8 的, 所以要把文件改为UTF-8

然后在Thinkphp5 extend文件夹下建立Wxxcx命名空间,把官方的几个类文件放进去(这里要注意文件夹名, 命名空间名, 类名的, 大小写,一定要一样,官方的文件名和类名大小写不一样)

然后是自己的thinkphp接口代码:

/** * Created by PhpStorm. * User: leeoo * Date: 2018/10/14 0014 * Time: 10:43 */namespace appapicontrollerv1; use thinkLoader; use thinkRequest; use WorkermanProtocolsHttp; use WxxcxWXBizDataCrypt; use firstsecondFoo; class Index { public function index($id) { return json([\’msg\’ => $id]); } public function dologin() { $code = Request::instance()->param(\’code\’); $encryptedData = Request::instance()->param(\’encryptedData\’); $iv = Request::instance()->param(\’iv\’); $appid = \”你的小程序appid\”; $secret = \”你的小程序secret\”; //appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code $param = array( \’appid\’ => $appid, \’secret\’ => $secret, \’js_code\’ => $code, \’grant_type\’ => \’authorization_code\’ ); //http函数为封装的请求函数 $res = http(\”https://api.weixin.qq.com/sns/jscode2session\”, $param, \’post\’); $arr = json_decode($res, true); $result = $this->wxdecode($encryptedData, $iv, $arr[\’session_key\’], $appid); //return json($result); if ($result) { return json([\’code\’ => 1]); } else { return json([\’code\’ => -1]); } } public function wxdecode($encryptedData, $iv, $sessionKey, $appid) { //Loader::import(\’WxxcxWXBizDataCrypt\’, EXTEND_PATH); $pc = new WXBizDataCrypt($appid, $sessionKey); $data = null; $errCode = $pc->decryptData($encryptedData, $iv, $data); //echo $data; //return json([\’data\’=>$data]); $data = json_decode($data); if ($errCode == 0) { //print($data . \”n\”); //dump($data); return $data; } else { //print($errCode . \”n\”); //dump($errCode); return $errCode; } } }

http封装函数:

/** * 发送HTTP请求方法 * @param string $url 请求URL * @param array $params 请求参数 * @param string $method 请求方法GET/POST * @return array $data 响应数据 */function http($url, $params, $method = \’GET\’, $header = array(), $multi = false){ $opts = array( CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => $header ); /* 根据请求类型设置特定参数 */ switch(strtoupper($method)){ case \’GET\’: $opts[CURLOPT_URL] = $url . \’?\’ . http_build_query($params); break; case \’POST\’: //判断是否传输文件 $params = $multi ? $params : http_build_query($params); $opts[CURLOPT_URL] = $url; $opts[CURLOPT_POST] = 1; $opts[CURLOPT_POSTFIELDS] = $params; break; default: throw new Exception(\’不支持的请求方式!\’); } /* 初始化并执行curl请求 */ $ch = curl_init(); curl_setopt_array($ch, $opts); $data = curl_exec($ch); $error = curl_error($ch); curl_close($ch); if($error) throw new Exception(\’请求发生错误:\’ . $error); return $data; }

然后是小程序的代码:

// 获取用户信息 wx.getSetting({ success: res => { if (res.authSetting[\’scope.userInfo\’]) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框 wx.getUserInfo({ success: res => { console.log(res); var encryptedData = res.encryptedData var iv = res.iv wx.request({ url: \”https://你的服务器地址/dologin\”,//dologin是访问后端的方法 method: \”post\”, data: { code: code, encryptedData: encryptedData, iv: iv }, success: function (ret) { console.log(ret); } }) // 可以将 res 发送给后台解码出 unionId this.globalData.userInfo = res.userInfo // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) },

自己实际操作一下会更好!


今日资料:4个G的PHP微信二次开发教程分享,第三方接口和小程序支付功能。

领取方式:关注然后私信回复PHP即可获得!

再次注意:有需要的可以关注私信取,只送50份!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月9日 上午9:07
下一篇 2024年5月9日 上午9:19

相关推荐

  • S7-1200能不能仿真通信?资深电气工程师告诉你

    前言 最近有一些小伙伴留言问:开发上位机的项目,PLC是西门子S7-1200,采用S7通信,不想一直带着PLC跑来跑去,能不能搭建一个S7-1200的仿真? 回复 当然是可以的,目…

    科研百科 2023年3月13日
    336
  • windows搭建nas私人网盘

    Windows搭建nas私人网盘 随着网络技术的不断发展,越来越多的人开始将数据存储到网络上,以便更好地保护数据的安全性和完整性。其中,NAS(Network Attached S…

    科研百科 2024年10月4日
    23
  • 浙江省地震局信息中心(浙江省地震局科研项目)

    浙江省地震局科研项目 浙江省地震局科研项目旨在研究地震的发生机制和预测方法,以提高我们对地震灾害的预防和应对能力。近年来,随着地震灾害的不断发生,我们越来越需要科学技术的支持和帮助…

    科研百科 2024年4月10日
    64
  • 项目管理软件厂商

    项目管理软件厂商 随着现代项目管理的日益复杂和多元化,项目管理软件厂商已经成为了项目管理中不可或缺的一部分。这些软件可以帮助项目经理和团队成员更好地规划和控制项目进度,提高项目效率…

    科研百科 2024年7月28日
    32
  • 工程进度项目管理

    工程进度项目管理 在工程进度项目管理中,确定项目目标、制定计划、管理资源和协调工作是核心任务。只有通过有效的项目管理,才能确保项目按时完成,并达到预期的成果。 在确定项目目标时,需…

    科研百科 2024年9月22日
    14
  • 发挥党建引领作用方面存在的问题

    发挥党建引领作用方面存在的问题 近年来,中国共产党在发挥党建引领作用方面取得了长足的进步,但是也存在一些问题。这些问题需要得到解决,以确保党建引领作用的充分发挥。 第一,党建引领作…

    科研百科 2024年10月17日
    84
  • 医院采购内控管理系统的重要性与实践(医院采购内控管理制度)

    随着现代医疗事业的快速发展,医院的采购业务日益增多,采购流程也愈加复杂。为了提高医院采购的效率和透明度,加强内部控制管理,越来越多的医院开始引入采购内控管理系统。本文将围绕医院采购…

    科研百科 2024年5月11日
    47
  • 远程办公系统排名

    随着科技的不断发展,远程办公已经成为越来越多公司的首选。在这篇文章中,我们将对目前市场上流行的远程办公系统进行排名。 1. Microsoft Teams Microsoft Te…

    科研百科 2024年9月26日
    22
  • 安钢纪委:强化日常监督提升企业治理效能

    今年以来,安钢纪委把监督融入生产经营和改革发展全过程,坚持权力集中到哪里、资金流动到哪里、项目建设到哪里,监督就跟进到哪里,持续释放监督效能,规范权力运行。 聚焦“关键少数”抓监督…

    科研百科 2023年2月2日
    201
  • 科研项目劳务费管理办法(科研项目的业务费和劳务费)

    科研项目的业务费和劳务费 科研项目的业务费和劳务费是科研项目中至关重要的两部分,它们直接关系到项目的进度和成果。在这篇文章中,我们将探讨科研项目的业务费和劳务费的计算方法、注意事项…

    科研百科 2024年8月4日
    48