如何在微信公众号中实现一个扫码获取微信用户信息功能吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>第一步:就是二维码的生成,强>
1。首先要确定第一个二维码,因为既然是扫码,肯定是要第一个二维码的,也就是第一人才可以。我将第一个二维码的唯一值(id)设置成零,然后开始我的编写
2。既然是二维码,我用了phpqrcode二维码生成插件,二维码的生成可以在本地编写,查看效果后再上传服务器。
(1)从网上下载下phpqrcode插件包,将它放到thinkphp的文件里,路径如下:thinkphp \图书馆\供应商,截图如下:
(2)二维码的生成,在调用显示二维码的控制器的方法中调用这个插件包,然后设置下扫描后跳转的URL就好了,代码如下:
url 美元;=?http://www.baidu.com"; $=3级; 美元大?4; 供应商(& # 39;phpqrcode.phpqrcode& # 39;);,//引入插件 errorCorrectionLevel 美元;=,intval中(美元级别),,//容错级别 matrixPointSize 美元;=,intval中(大小)美元;//生成图片大?/生成二维码图片 $ object =, new \ QRcode (),, $ path =,“公共/ER/1. png",//本地文件存储路径 对象→美元png ($ url,路径,美元,errorCorrectionLevel美元,matrixPointSize美元,2),
这只是实现生成二维码并且可以进入二维码指定的网址,真正要实现的目的是扫带有参数的二维码,获取微信用户的信息
下面就是怎么实现生成带有参数的二维码,,,
3。(1)要用到微信的网页授权,就要用到公众号的几个参数:1是AppID 2是AppSecret 这是公众号申请成功后分配下来的
(2)利用这两个参数,然后再配合获取access_token的值就可以了
代码如下(扫描后跳转到getUserInfo方法,并且把唯一键值传过去):
tid 美元;=,0;,//传值的参数 $=3级; 美元大?4; 供应商(& # 39;phpqrcode.phpqrcode& # 39;); errorCorrectionLevel 美元;=,intval中(美元级别),,//容错级别 matrixPointSize 美元;=,intval中(大小)美元;//生成图片大?/生成二维码图片 $ object =, new \ QRcode (); path 美元;=,“公共/ER/?只tid 美元;只“.png",,//本地文件存储路径 对象→美元png ($ url,路径,美元,errorCorrectionLevel美元,matrixPointSize美元,2); appid美元=& # 39;* * * * * * & # 39;,,//公众号唯一标识 redirect_uri 美元;=,urlencode (, & # 39; http://www。* * * *.net/index.php/Admin/Sindex/getUserInfo?id=& # 39; tid 美元;);,//这个是设置参数和授权后重定向的回调链接地址//snsapi_userinfo弹出授权页面,可通过openid拿到昵称,性别,所在地,snsapi_base ,不弹出授权页面,直接跳转,只能获取用户openid url 美元;=癶ttps://open.weixin.qq.com/connect/oauth3/authorize?appid=appid&美元;redirect_uri=$ redirect_uri& response_type=code&范围=snsapi_userinfo&国家=1 # wechat_redirect";
<强>,下面是写跳转后的操作,,强>
(1)接收传过来的值
(2)取得openid
(3)根据全局access_token和openid查询用户信息,
(4)将信息写入数据库
获取openid或者其他的东西,用到下面的方法,可以快速截取到需要的东西
function getJson ($ url) { ,ch 美元;=,curl_init (); ,curl_setopt (CURLOPT_URL, ch,美元,美元url); ,curl_setopt (ch,美元,CURLOPT_SSL_VERIFYPEER,,假),, ,curl_setopt (ch,美元,CURLOPT_SSL_VERIFYHOST,,假),, ,curl_setopt (ch,美元,CURLOPT_RETURNTRANSFER,, 1); ,output 美元;=,curl_exec (ch); 美元,curl_close (ch); ,return json_decode(输出美元,,真的); }
接下来就是将上面的步骤逐一实现,代码如下:
public function getUserInfo () { ,appid 美元;=,“* * * * *“,//公众号唯一标识 ,secret 美元;=,“* * * * *“,//应用秘钥 ,//美元代码是回调的时候地址上带的,只需要得到方式接收就可以了=,美元code $ _GET [“code"];, ,//获取传过来的值=,美元htjid $ _GET [“id"]; ,//第一步:取得openid=,美元oauth3Url “https://api.weixin.qq.com/sns/oauth3/access_token?appid=appid&美元;秘密=$ secret&代码=$ code& grant_type=authorization_code"; 美元,美元oauth3 =,这→getJson ($ oauth3Url); ,//第二步:根据全局access_token和openid查询用户信息, 美元,美元access_token =, oauth3 [“access_token"];, 美元,美元openid =, oauth3 [& # 39; openid # 39;];,=,美元get_user_info_url “https://api.weixin.qq.com/sns/userinfo?access_token=access_token&美元;openid=$ openid& lang=zh_CN"; 美元,美元userinfo =,这→getJson ($ get_user_info_url); ,//写入数据库微信用户 ,M ()→startTrans();//开启事务 ,n 美元;=,M (“zp_user");,//写入的表=,美元openid $ data [& # 39; openid # 39;],=,美元用户信息(& # 39;openid # 39;];,//微信用户openid ,$ data[& # 39;性与# 39;],=,美元用户信息(& # 39;性与# 39;];,//性别, ,$ data [& # 39; headimgurl& # 39;],=,美元用户信息(& # 39;headimgurl& # 39;];,//头像 ,$ data[& # 39;省# 39;],=,美元用户信息(& # 39;省# 39;];,//地盛区 ,$ data[& # 39;城市# 39;],=,美元用户信息(& # 39;城市# 39;];,//地区史 ,$ data [& # 39; subscribe_time& # 39;],=,时间(),,//时间 ,$ data [& # 39; qr_scene& # 39;],=, htjid美元;,//传过的值 ,$ data[& # 39;昵称# 39;],=,美元用户信息(& # 39;昵称# 39;];,//昵称=,美元z $ n→锁(真正)→添加(元数据); ,如果(! $ z) ,{ ,M ()→rollback();//回滚 美元,这→错误(& # 39;添加错误! & # 39;); ,其他}{ ,M ()→commit();//事务提交 ,} }如何在微信公众号中实现一个扫码获取微信用户信息功能