概述:
获得与公众号进行交互的用户信息
步骤:
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. 测试:
在微信中向公众号发送任意信息,会回复:“您发送的信息是:[收到的信息][用户昵称]”