夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)

如果用户在微信客户端访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,从而实现业务逻辑。

一般我们用来“数据采集”,“市场调查”,“投票”,只要授权了第三方网页,微信用户无需注册就可以访问这些网页

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如果能成功跳转,那么恭喜您,您已经成功了一大半部分咯,嘻嘻

原文地址:https://www.cnblogs.com/leigood/p/5252585.html