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

相关推荐