微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)
微信公众号扫码跳转网页
微信公众号实现扫码获取微信用户信息网页授权刚开始接触微信的时候一头雾水,领导想要一个扫码获取微信用户信息的功能,而且是扫的别人的二维码,我是一阵忙活啊。
经过努力和尝试,终于功夫不负有心人啊,赶紧记录一下,我用的是thinkphp编写的。
第一步:就是二维码的生成
1.首先要确定第一个二维码,因为既然是扫码,肯定是要第一个二维码的,也就是第一人才可以。我将第一个二维码的唯一值(id)设置成零,然后开始我的编写
2.既然是二维码,我用了phpqrcode二维码生成插件,二维码的生成可以在本地编写,查看效果后再上传服务器。
(1)从网上下载下phpqrcode插件包,将它放到thinkphp的文件里,路径如下:thinkphp\library\vendor ,截图如下:
(2)二维码的生成,在调用显示二维码的控制器的方法中调用这个插件包,然后设置下扫描后跳转的url就好了,代码如下:
|
$url = "http://www.baidu.com" ; $level =3; $size =4; vendor( 'phpqrcode.phpqrcode' ); //引入插件 $errorcorrectionlevel = intval ( $level ) ; //容错级别 $matrixpointsize = intval ( $size ); //生成图片大小 //生成二维码图片 $object = new \qrcode(); $path = "public/er/1.jpg" alt="微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)" border="0" /> $object ->.jpg" alt="微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)" border="0" /> |
这只是实现生成二维码并且可以进入二维码指定的网址,真正要实现的目的是扫带有参数的二维码,获取微信用户的信息
下面就是怎么实现生成带有参数的二维码
3.(1)要用到微信的网页授权,就要用到公众号的几个参数:1是appid 2是appsecret 这是公众号申请成功后分配下来的
(2)利用这两个参数,然后再配合获取access_token的值就可以了
代码如下(扫描后跳转到getuserinfo方法,并且把唯一键值传过去):
|
$tid = 0; //传值的参数 $level =3; $size =4; vendor( 'phpqrcode.phpqrcode' ); $errorcorrectionlevel = intval ( $level ) ; //容错级别 $matrixpointsize = intval ( $size ); //生成图片大小 //生成二维码图片 $object = new \qrcode(); $path = "public/er/" . $tid . ".jpg" alt="微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)" border="0" /> $object ->.jpg" alt="微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)" border="0" /> $appid = '******' ; //公众号唯一标识 $redirect_uri = urlencode ( 'http://www.****.net/index.php/admin/sindex/getuserinfo?id=' . $tid ); //这个是设置参数和授权后重定向的回调链接地址 //snsapi_userinfo弹出授权页面,可通过openid拿到昵称、性别、所在地 snsapi_base ,不弹出授权页面,直接跳转,只能获取用户openid $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect" ; |
下面是写跳转后的操作
(1)接收传过来的值
(2)取得openid
(3)根据全局access_token和openid查询用户信息
(4)将信息写入数据库
获取openid或者其他的东西,用到下面的方法,可以快速截取到需要的东西
|
function 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 ); return json_decode( $output , true); } |
接下来就是将上面的步骤逐一实现,代码如下:
|
public function getuserinfo() { $appid = "*****" ; //公众号唯一标识 $secret = "*****" ; //应用秘钥 //$code是回调的时候地址上带的 只需要get方式接收就可以了 $code = $_get [ "code" ]; //获取传过来的值 $htjid = $_get [ "id" ]; //第一步:取得openid $oauth2url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$secret&code=$code&grant_type=authorization_code" ; $oauth2 = $this ->getjson( $oauth2url ); //第二步:根据全局access_token和openid查询用户信息 $access_token = $oauth2 [ "access_token" ]; $openid = $oauth2 [ 'openid' ]; $get_user_info_url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_cn" ; $userinfo = $this ->getjson( $get_user_info_url ); //写入数据库微信用户 m()->starttrans(); //开启事务 $n = m( "zp_user" ); //写入的表 $openid = $data [ 'openid' ] = $userinfo [ 'openid' ]; //微信用户openid $data [ 'sex' ] = $userinfo [ 'sex' ]; //性别 $data [ 'headimgurl' ] = $userinfo [ 'headimgurl' ]; //头像 $data [ 'province' ] = $userinfo [ 'province' ]; //地区sheng $data [ 'city' ] = $userinfo [ 'city' ]; //地区shi $data [ 'subscribe_time' ] = time(); //时间 $data [ 'qr_scene' ] = $htjid ; //传过的值 $data [ 'nickname' ] = $userinfo [ 'nickname' ]; //昵称 $z = $n ->lock(true)->add( $data ); if (! $z ) { m()->rollback(); //回滚 $this ->error( '添加错误!' ); } else { m()->commit(); //事务提交 } } |
到此,就可以实现扫描二维码获取用户信息了,并且将用户信息写入数据库
这是第一个二维码,生成后,就可以将id的参数值换成前面传过来的值,也就是扫码的值 $tid = 0; //传值的参数
如果想要自己的二维码页面好看的话,比如想要把自己的微信昵称和二维码合成一张图片的话,也是可以实现的,这就要用到图片的合成了,下次再说吧。
总结
以上所述是小编给大家介绍的微信公众号实现扫码获取微信用户信息(网页授权),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:https://www.cnblogs.com/nuanai/p/10501946.html
- python如何抓取公众号文章(python爬取微信公众号文章的方法)
- 微信公众号怎么开发页面(微信公众平台开发教程②微信端分享功能图文详解)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- 微信公众号用户怎么增加(微信公众号用户与网站用户的绑定解决方案分析)
- 微信公众号文章 爬虫(python抓取搜狗微信公众号文章)
- h5页面强制关注微信公众号(Html5页面获取微信公众号的openid的方法)
- 开发者微信公众号开发流程(微信公众平台开发教程⑥ 微信开发集成类的使用图文详解)
- h5怎么在微信公众号发布(H5微信公众号授权的简单实现步骤)
- 微信公众号怎么获取用户openid(微信公众平台开发教程①获取用户Openid及个人信息图文详解)
- python有什么好的微信公众号(python下载微信公众号相关文章)
- 微信公众号扫码跳转网页(微信公众号实现扫码获取微信用户信息网页授权)
- 微信公众号怎么申请支付接口(微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解)
- 如何用微信公众号发送信息(微信公众号之主动给用户发送消息功能)
- 为什么现在年轻人越来越喜欢买衣服(为什么现在年轻人越来越喜欢买衣服穿)
- 怎么做好SEO(怎么做好seo内容优化)
- 冬季钓鱼子线用 长 还是 短(冬季钓鱼子线用)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
热门推荐
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- tomcat运行警告(tomcat异常解决Invalid character found in the request target. The valid characters are defined in)
- js数组排序有哪些(js将多维数组转为一维数组后去重排序)
- python如何使用multiprocess(Python multiprocessing多进程原理与应用示例)
- 微信小程序左右翻页效果(微信小程序实现九宫格效果)
- css3支持多重背景吗(真正了解CSS3背景下的@font face规则)
- python出现modify怎么办(解决Python找不到ssl模块问题 No module named _ssl的方法)
- sql2012登录失败(详解安装sql2012出现错误could not open key...解决办法)
- mybatis为什么还用mysql(关于MyBatis连接MySql8.0版本的配置问题)
- python表白代码演示(python3实现表白神器)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9