美文网首页
PHP获取用户是否关注公众号。获取微信openid和用户信息

PHP获取用户是否关注公众号。获取微信openid和用户信息

作者: zhenbinjing | 来源:发表于2019-08-27 16:27 被阅读0次

    <?php

    /*

     * 首先填写授权地址为当前网址

     * 将$appid和$secret参数替换成自己公众号对应参数,需要外网可以访问服务器环境测试

     */

    header("Content-Type:text/html; charset=utf-8");

    date_default_timezone_set("Asia/Shanghai");

    //define('code', $_GET['code']);

    $oauth = new oauth();

    if (!empty($_GET['code'])) {

        $res_json = $oauth->GetOpenid();

        if ($res_json['subscribe'] != 1) {

            $subscribe = "未关注";

        } else {

            $subscribe = "已关注";

        }

        if ($res_json['sex'] == 1) {

            $sex = "男";

        } elseif ($res_json['sex'] == 2) {

            $sex = "女";

        } else {

            $sex = "未知";

        }

        echo '

            <html>

            <head>

            <meta charset="utf-8">

            <style>

                .info{

                    width:60%;

                    height:80%;

                }

                .input{

                    background: #eaeaea none repeat scroll 0 0;

                    border: 1px solid #dedede;

                    border-radius: 12px;

                    box-shadow: none;

                    outline: medium none;

                    padding: 10px;

                    resize: none;

                    width: 100%;

                }

            </style>

            <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no" name="viewport">

            </head>

            <body>

            <table border="0" class="info">

            <tr>

                <td>头像:</td>

                <td><img src="' . $res_json['headimgurl'] . '" width=150 height=150></td>

            </tr>

            <tr>

                <td>昵称:</td>

            </tr>

            <tr>

                <td>性别:</td>

            </tr>

            <tr>

                <td>地址:</td>

            </tr>

            <tr>

                <td>openid:</td>

            </tr>

            <tr>

                <td>关注:</td>

            </tr>

            <tr>

                <td>时间:</td>

            </tr>

            <tr>

                <td>备注:</td>

            </tr>

            <tr>

                <td>分组:</td>

            </tr>

            </table></body></html>';

    } else {

        $oauth->GET_Code();

    }

    class oauth {

        public $appid = "xxxxxxxxx";

        public $secret = "xxxxxxxxxxxxxx";

        //获取用户openid

        public function GetOpenid() {

            $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appid . '&secret=' . $this->secret . '&code=' . $_GET['code'] . '&grant_type=authorization_code';

            $json_obj = $this->https_request($get_token_url);

            // $access_token = $json_obj['access_token'];

            $openid = $json_obj['openid'];

            //$get_user_info_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN';

            $res_json = $this->getAccessInfo($this->appid, $this->secret, $openid);

            return $res_json;

        }

        //发起获得code值链接

        public function GET_Code() {

            $get_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid;

            $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

            header("location:" . $get_url . "&redirect_uri=" . $url . "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect");

        }

        //开始获取用户基本信息包含是否关注

        public function getAccessInfo($appid, $secret, $openid) {

            //获取access_token参数

            $json_token = $this->_getAccessToken($appid, $secret);

            //获取用户基本信息包含是否关注

            $get_user_info_url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=' . $json_token['access_token'] . '&openid=' . $openid . '&lang=zh_CN';

            $json_info = $this->https_request($get_user_info_url);

            return $json_info;

        }

        //获取access_token

        private function _getAccessToken($appid, $secret) {

            $url_get = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $secret;

            $json = $this->https_request($url_get);

            return $json;

        }

        //通用数据处理方法

        public function https_request($get_token_url) {

            $ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $get_token_url);

            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");

            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

            curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);

            curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');

            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

            curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

            $temp = curl_exec($ch);

            return json_decode($temp, true);

        }

    }

    ?>

    转载:https://www.cnblogs.com/it1000/p/11088229.html

    相关文章

      网友评论

          本文标题:PHP获取用户是否关注公众号。获取微信openid和用户信息

          本文链接:https://www.haomeiwen.com/subject/usgeectx.html