微信后台如何编写代码以提取特定用户的昵称?

更新于
2026-09-27 14:06:49
1阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计673个文字,预计阅读时间需要3分钟。

微信后台如何编写代码以提取特定用户的昵称?

微信后台代码,自动更新access token并存入数据库,使用access token获取用户信息等。

微信后台代码,自动更新access token,并存储到数据库,从而利用access token,在用户关注或发送消息时,获取用户昵称等信息

<?php define("TOKEN", "weixin"); define("NO_OAUTH2", "noOauth2"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallbackapiTest { //微信来源验证 public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } //消息处理 //仅实现了文本消息和推送事件 public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this->receiveText($postObj); break; case "image": $resultStr = $this->receiveImage($postObj); break; case "location": $resultStr = $this->receiveLocation($postObj); break; case "voice": $resultStr = $this->receiveVoice($postObj); break; case "video": $resultStr = $this->receiveVideo($postObj); break; case "link": $resultStr = $this->receiveLink($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } function receiveText($object) { $funcFlag = 0; $contentStr = $this->get_name($object).",你发送的是文本,内容为:".$object->Content; $resultStr = $this->transmitText($object, $contentStr, $funcFlag); return $resultStr; } public function get_name($object) { $access_token=$this->readtoken(); //这里需要解决access_token 2个小时有效期的问题, //一个思路是,新定义一个函数,只要一调用这个函数,则查找数据库上一个access_token生成的时间,对比现在的时间 //若超过2个小时,则用get方式获取新的access_token,并返回新的access_token,且存储到数据库中; //若不到2个小时,则把数据库中已经存储的最新的access_token提取并返回; $openid=$object->FromUserName; //拼成获取用户信息的SSL get方式的API链接 $infourl="api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN"; $result=$this->api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret; //echo $access_token_url; $access_json=$this->www.xxx.com/weixin/courseCenter.php?wx_openid=" . $object->FromUserName . "'>我的课堂</a>] [<a href='www.xxx.com/weixin/orderList.php?wx_openid=" . $object->FromUserName . "'>订单记录</a>]"; break; case "Oauth2": $contentStr = $this->toAuthMsg(); break; default: $contentStr = "你点击了菜单: ".$object->EventKey; break; } break; default: $contentStr = "receive a new event: ".$object->Event; break; } $resultStr = $this->transmitText($object, $contentStr); if($contentStr == NO_OAUTH2){ header("location: www.xxx.com/weixin/courseCenter.php?wx_openid=" . $object->FromUserName); exit; } return $resultStr; } private function transmitText($object, $content, $flag = 0) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>%d</FuncFlag> </xml>"; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); return $resultStr; } private function toAuthMsg() { $resultStr = "<a href='open.weixin.qq.com/connect/oauth2/authorize?appid=wx834404c1d1dbb5ec&redirect_uri=www.xxx.com/weixin/oauth2_code.php&response_type=code&scope=snsapi_base&state=liutest012#wechat_redirect'>马上绑定</a>"; return $resultStr; } } ?>

微信后台如何编写代码以提取特定用户的昵称?

本文共计673个文字,预计阅读时间需要3分钟。

微信后台如何编写代码以提取特定用户的昵称?

微信后台代码,自动更新access token并存入数据库,使用access token获取用户信息等。

微信后台代码,自动更新access token,并存储到数据库,从而利用access token,在用户关注或发送消息时,获取用户昵称等信息

<?php define("TOKEN", "weixin"); define("NO_OAUTH2", "noOauth2"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallbackapiTest { //微信来源验证 public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } //消息处理 //仅实现了文本消息和推送事件 public function responseMsg() { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $RX_TYPE = trim($postObj->MsgType); switch ($RX_TYPE) { case "text": $resultStr = $this->receiveText($postObj); break; case "image": $resultStr = $this->receiveImage($postObj); break; case "location": $resultStr = $this->receiveLocation($postObj); break; case "voice": $resultStr = $this->receiveVoice($postObj); break; case "video": $resultStr = $this->receiveVideo($postObj); break; case "link": $resultStr = $this->receiveLink($postObj); break; case "event": $resultStr = $this->receiveEvent($postObj); break; default: $resultStr = "unknow msg type: ".$RX_TYPE; break; } echo $resultStr; }else { echo ""; exit; } } function receiveText($object) { $funcFlag = 0; $contentStr = $this->get_name($object).",你发送的是文本,内容为:".$object->Content; $resultStr = $this->transmitText($object, $contentStr, $funcFlag); return $resultStr; } public function get_name($object) { $access_token=$this->readtoken(); //这里需要解决access_token 2个小时有效期的问题, //一个思路是,新定义一个函数,只要一调用这个函数,则查找数据库上一个access_token生成的时间,对比现在的时间 //若超过2个小时,则用get方式获取新的access_token,并返回新的access_token,且存储到数据库中; //若不到2个小时,则把数据库中已经存储的最新的access_token提取并返回; $openid=$object->FromUserName; //拼成获取用户信息的SSL get方式的API链接 $infourl="api.weixin.qq.com/cgi-bin/user/info?access_token=".$access_token."&openid=".$openid."&lang=zh_CN"; $result=$this->api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret; //echo $access_token_url; $access_json=$this->www.xxx.com/weixin/courseCenter.php?wx_openid=" . $object->FromUserName . "'>我的课堂</a>] [<a href='www.xxx.com/weixin/orderList.php?wx_openid=" . $object->FromUserName . "'>订单记录</a>]"; break; case "Oauth2": $contentStr = $this->toAuthMsg(); break; default: $contentStr = "你点击了菜单: ".$object->EventKey; break; } break; default: $contentStr = "receive a new event: ".$object->Event; break; } $resultStr = $this->transmitText($object, $contentStr); if($contentStr == NO_OAUTH2){ header("location: www.xxx.com/weixin/courseCenter.php?wx_openid=" . $object->FromUserName); exit; } return $resultStr; } private function transmitText($object, $content, $flag = 0) { $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>%d</FuncFlag> </xml>"; $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); return $resultStr; } private function toAuthMsg() { $resultStr = "<a href='open.weixin.qq.com/connect/oauth2/authorize?appid=wx834404c1d1dbb5ec&redirect_uri=www.xxx.com/weixin/oauth2_code.php&response_type=code&scope=snsapi_base&state=liutest012#wechat_redirect'>马上绑定</a>"; return $resultStr; } } ?>

微信后台如何编写代码以提取特定用户的昵称?