微信开发(三)获取用户信息,同时整理代码

概述:

获得与公众号进行交互的用户信息

步骤:

1. 获得AccessToken

2. 获得OpenID

3. 获得用户信息

实现:

1. 将配置参数封装起来:

创建config.php文件,内容如下:

//填写自己公众号的appid
define("APPID", "***********");
//填写自己公众号的secret
define("APPSECRET", "**************************");
//定义全局Token
define("TOKEN", "hhwxjj");
2. 将功能函数封装起来,内容如下:

<?php
function getUserNickName($openId = null){
	if(empty($openId))return "OpenId is Empty";
	$accessToken = getAccessToken();
	//构造Get请求URL
	$url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={$accessToken}&openid={$openId}";
	//通过CURL提交GET请求
	$result = https_request($url);
	//解码JSON数据
	$strjson=json_decode($result);
	//获得Token
	$token = $strjson;
	return $token;
}

function getAccessToken(){
	//构造Get请求URL
	$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".APPSECRET;
	//通过CURL提交GET请求
	$result = https_request($url);
	//解码JSON数据
	$strjson=json_decode($result);
	//获得Token
	$token = $strjson->access_token;
	return $token;
}

function https_request($url, $data = null, $method = 'GET'){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
	if($method != 'GET'){
		if (!empty($data)){
			curl_setopt($curl, CURLOPT_POST, 1);
			curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
		}
	}
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
    curl_close($curl);
    return $result;
}
?>
3. 建立用户操作类

建立文件GetUserInfo.php, 内容如下:

<?php
class GetUserInfo{
	private $openId;
	
	public function __construct($openId){
		$this->openId = $openId;
	}
	
	public function getUserInfo(){
		$usenikename = getUserNickName($this->openId);
		return $usenikename;
	}
}
?>

4. 在入口文件index.php中引入上述文件,并增加操作响应来测试:

require('config.php');
require('util.php');
require('GetUserInfo.php');
...
<pre name="code" class="php">//文本消息响应信息
	private function responseText($object)
    {
		$getUserInfo = new GetUserInfo($object->FromUserName);
        
		$funcFlag = 0;
        $contentStr = "你发送的内容为:".$object->Content.$getUserInfo->getUserInfo();
        $resultStr = $this->transmitText($object, $contentStr, $funcFlag);
        return $resultStr;
    }

5. 测试:
在微信中向公众号发送任意信息,会回复:“您发送的信息是:[收到的信息][用户昵称]”
 
 

猜你喜欢

转载自blog.csdn.net/hanjingjava/article/details/41703993