it1000

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

<?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>
			<td class="input">\' . $res_json[\'nickname\'] . \'</td>
		</tr>
		<tr>
			<td>性别:</td>
			<td class="input">\' . $sex . \'</td>
		</tr>
		<tr>
			<td>地址:</td>
			<td class="input">\' . $res_json[\'country\'] . $res_json[\'province\'] . $res_json[\'city\'] . \'</td>
		</tr>
		<tr>
			<td>openid:</td>
			<td class="input">\' . $res_json[\'openid\'] . \'</td>
		</tr>
		<tr>
			<td>关注:</td>
			<td  class="input">\' . $subscribe . \'</td>
		</tr>
		<tr>
			<td>时间:</td>
			<td class="input">\' . date("Y-m-d H:i:s", $res_json[\'subscribe_time\']) . \'</td>
		</tr>
		<tr>
			<td>备注:</td>
			<td class="input">\' . $res_json[\'remark\'] . \'</td>
		</tr>
		<tr>
			<td>分组:</td>
			<td class="input">\' . $res_json[\'groupid\'] . \'</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);
    }

}

?>

  

分类:

技术点:

相关文章:

  • 2021-08-17
  • 2021-11-21
  • 2021-06-14
  • 2021-04-08
  • 2022-02-07
  • 2021-12-17
  • 2022-01-11
  • 2022-01-18
猜你喜欢
  • 2021-09-21
  • 2021-07-15
  • 2022-01-07
  • 2021-11-27
  • 2021-10-06
  • 2021-11-18
  • 2021-11-27
相关资源
相似解决方案