如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑。
一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可以访问这些网页
oauth网页授权有两种方式:
1.base(基本型)用户可直接通过链接访问,相应的微信公众号只能获取用户的openid,无法获取到其他信息。
2.Userinfo(用户信息型),访问时候会弹出授权页面,同意后微信公众账号可以获取用户其他信息,比如昵称头像,性别,地址等
base型授权流程原理分析,(这里很重要噢)。。
先来手册里面看下:
主要是分为4步走,如果还是不懂可以通过观看下图即可:
我们开始配置好授权页面的域名,注意这里填写的是域名,而且不要带http://,可以简单的理解成就是第三放网站所在的域名,如下图所示:
然后我们来创建一个create_baseurl.php的文件,代码如下所示:
<?php header("Content-Type:text/html;charset=utf-8"); require_once "get_token.php"; require_once "common.php"; //公众号的appid $appid = "wxed89d8f74fa6fc51"; //回调url,也就是第三方页面 $base_redirect_uri = "http://weixin.showtp.com/vote1.php"; $base_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$base_redirect_uri}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"; echo "您发送的值是:{$base_url}<br />"; //这里可以写得更人性化一点,通过表单post过来即可 $contentStr = $base_url; //因为是测试蓄意将openid写死了 $fromUsername = ‘oB1_6tzeHj-KG7kL8Thmu6VcF2BM‘; //因为可能会存在中文所以需要url编码 $contentStr = urlencode($contentStr); //到时候我们我发送的内容我们放到一个数组里面去了 $content_arr = array(‘content‘=>"{$contentStr}"); //这里的意思是将来我要发送消息给这个用户 $reply_arr = array(‘touser‘=>"{$fromUsername}",‘msgtype‘=>‘text‘,‘text‘=>$content_arr); //下一步就是将编码转成规定的json格式 $post = json_encode($reply_arr); //url解码,如果不解码他将会发来一段二进制代码 $post = urldecode($post); $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}"; //处理好了直接发送 http_request($url,$post); echo "发送成功咯";
然后创建一个vote1.php的文件,主要是测试下看过他是否能跳转,代码如下所示:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>你最喜欢那个类型的女人</title> <meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=no;"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="format-detection" content="telephone=no"> <link href="./jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css"> <script src="./jquery-1.6.4.min.js" type="text/javascript"></script> <script src="./jquery.mobile-1.0.min.js" type="text/javascript"></script> </head> <body> <div data-role="page" id="page3"> <div data-role="header"> <h1>你最喜欢那个类型的女人</h1> </div> <div data-role="content"> <form action="#" method="get" data-ajax="false" > <div data-role="fieldcontain"> <fieldset data-role="controlgroup"> <legend>你最喜欢那个类型的女人</legend> <input type="radio" name="radio1" id="radio1_0" value="温柔" /> <label for="radio1_0">温柔</label> <input type="radio" name="radio1" id="radio1_1" value="开朗" /> <label for="radio1_1">开朗</label> <input type="radio" name="radio1" id="radio1_2" value="拨辣" /> <label for="radio1_2">拨辣</label> <input type="radio" name="radio1" id="radio1_3" value="文静" /> <label for="radio1_3">文静</label> </fieldset> </div> <div class="ui-block-a"> <button type="submit" data-role="button" >点击提交</button> </div> </div> </div> </form> </body> </html>
然后在浏览器上打开create_baseurl.php文件,然后对她进行访问,效果如下所示:
然后手机端将会收到一条链接,点击那条链接进入vote1.php如果能成功跳转,那么恭喜您,您已经成功了一大半部分咯,嘻嘻