如何在微信公众号中实现一个扫码获取微信用户信息功能

  介绍

如何在微信公众号中实现一个扫码获取微信用户信息功能吗?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>第一步:就是二维码的生成,

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();//事务提交   ,}   }

如何在微信公众号中实现一个扫码获取微信用户信息功能