宝哥软件园

微信微信官方账号实现扫码获取微信用户信息(网页授权)

编辑:宝哥软件园 来源:互联网 时间:2021-08-26

刚接触微信的时候,很迷茫。领导想要一个扫码获取微信用户信息的功能,而且是扫描别人的二维码。我忙了一会儿。

经过努力和尝试,是有回报的。请迅速记录下来。我用thinkphp写的。

第一步:二维码的生成

1.首先要确定第一个二维码,因为既然是扫码,那就必须是第一个二维码,也就是第一个人可以做到。我把第一个二维码的唯一值(id)设置为零,然后开始写

2.既然是二维码,我就用了phpqrcode二维码生成插件。二维码生成可以本地编写,检查效果后上传到服务器。

(1)从网上下载phpqrcode插件包,放入thinkphp的文件中。路径如下:ThinkPHPLibraryVendor,截图如下:

(2)二维码生成,在调用显示二维码的控制器的方法中调用这个插件包,扫描后再设置URL跳转。代码如下:

$ URL=' http://www . Baidu.com ';$ level=3;$ size=4;供应商(' phpqr code . phpqr code ');//引入插件$ errorcorrectionlevel=int val($ level);//容错级别$ matrix pointsize=int val($ size);//生成图像大小//生成二维码图像$ object=new QR code();$ path=' Public/ER/1 . png ';//本地文件存储路径$ object-png ($ URL,$ path,$ errorcorrectionlevel,$ matrixpointsize,2);这只是生成二维码,输入二维码指定的网址。真正的目的是用参数扫描二维码,获取微信用户的信息

下面是如何生成带参数的二维码

3.(1)使用微信的网页授权,需要用到微信官方账号的几个参数:1是AppID 2是AppSecret,是微信官方账号申请成功后分配的。

(2)使用这两个参数,然后合作获取access_token的值

代码如下(扫描后跳转到getUserInfo方法,传递唯一键值):

$ tid=0;//由值$level=3传递的参数;$ size=4;供应商(' phpqr code . phpqr code ');$ ErrorCorrectionLeveL=int val($ LeveL);//容错级别$ matrix pointsize=int val($ size);//生成图像大小//生成二维码图像$ object=new QR code();$path='Public/ER/'。$tid。png ';//本地文件存储路径$ object-png ($ URL,$ path,$ errorcorrectionlevel,$ matrixpointsize,2);$ appid=' * * * * * *//微信官方账号唯一标识$ redirect _ uri=URL encode(' http://www。* * * *.net/index . PHP/admin/sindex/getuser info?id='。$ tid);//这是设置参数和授权后重定向的回调链接地址。//snsapi_userinfo弹出授权页面。你可以通过openid获得snsapi_base的昵称、性别和位置。不用弹出授权页面,可以直接跳转,只得到用户OpenID $ URL=' https://Open.weixin.qq.com/connect/oauth2/authorize? appid=$ appid redirect _ uri=$ redirect _ uri _ type=codescope=snsapi _ user infostate=1 #微信_ redirect ';以下是写跳转后的操作

(1)接收发送的值

(2)获取开放id

(3)根据全局访问令牌和openid查询用户信息

(4)将信息写入数据库

要获得openid或其他东西,您可以使用以下方法快速截取您需要的内容

函数getJson($ URL){ $ ch=curl _ init();curl_setopt($ch,CURLOPT_URL,$ URL);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$ output=curl _ exec($ ch);curl _ close($ ch);返回json_decode($output,true);}下一步是逐一执行上述步骤。代码如下:

公共函数GetUserInfo(){ $ appid=' * * * * * ';//微信官方账号唯一标识$ secret=' * * * * * * ';//应用秘钥//$code是回调,只需要get接收即可。$ code=$ _ GET[' code '];//获取传递的值$ htjid=$ _ GET[' id '];//第一步:获取OpenID $ oauth 2 URl=' https://API . weixin . QQ.com/SNS/oauth 2/access _ token?appid=$ appid secret=$ secretcode=$ codegrant _ type=authorization _ code ';$ oauth 2=$ this-Getjson($ oauth 2 URl);//第二步:根据全局access_token和openid查询用户信息$ access _ token=$ oauth 2[' access _ token '];$ OpenID=$ oauth 2[' OpenID '];$ get _ user _ info _ URL=' https://API . weixin . QQ.com/SNS/user info?access _ token=$ access _ token OpenID=$ openidlang=zh _ CN ';$ user info=$ this-GetJSon($ get _ user _ info _ URL);//写入数据库微信用户M()-startTrans();//未结交易$ n=M(' ZP _ user ');//写入表$ OpenID=$ data[' OpenID ']=$ user info[' OpenID '];//微信用户OpenID $ data[' sex ']=$ user info[' sex '];//gender $ data[' head im gur ']=$ user info[' head im gur '];//avatar $ data ['省份']=$ userinfo ['省份'];//region sheng $ data[' city ']=$ user info[' city '];//地区Shi $ data[' subscribe _ time ']=time();//time $ data[' QR _ scene ']=$ htjid;//传递的值$ data ['昵称']=$ userinfo ['昵称'];//昵称$ z=$ n-lock(true)-add($ data);if(!$ z){ M()-回滚();//回滚$ this-错误(' add error!');} else { M()-commit();//事务提交}}此时,您可以扫描二维码以获取用户信息,并将用户信息写入数据库

这是第一个二维码。生成后,id的参数值可以替换为前一个发送的值,即扫描码值$ tid=0;//通过值传递的参数

如果想让自己的二维码页面好看,比如想把自己的微信昵称和二维码组合成一张图片,就可以实现,这就需要图片的组合。下次再说吧。

摘要

以上是边肖介绍的微信微信官方账号,可以扫码获取微信用户信息(网页授权)。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你的!

更多资讯
游戏推荐
更多+