<?php define("TOKEN", "shiva"); class Wechatsign extends Back_Controller{ private $appId; private $appSecret; public function __construct($appId, $appSecret){ $this->appId = '你自己的APPID'; $this->appSecret= '你自己的APPSECRET'; } public function getBaseInfo(){ //1.獲取到code $redirect_uri=urlencode("http://你的域名/Wechatsign/getUserOpenId");//這里的地址需要http:// $url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appId."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"; header('location:'.$url); } public function getUserOpenId(){ //2.獲取到網頁授權的access_token $code = $_GET['code']; $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appId."&secret=".$this->appSecret."&code=".$code."&grant_type=authorization_code "; //3.拉取用戶的openid $res = $this->http_curl($url); echo $res;//打印即可看到用戶的openid $data = json_decode($res,true); if(!empty($data['access_token']) && !empty($data['openid'])){ $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$data['access_token']."&openid=".$data['openid']."&lang=zh_CN"; $userInfo = $this->http_curl($url); echo $userInfo; } } public function valid(){ $echoStr = $_GET["echostr"]; //valid signature , option 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 http_curl($url){ $curl = curl_init(); //設置抓取的url curl_setopt($curl, CURLOPT_URL, $url); //設置頭文件的信息作為數據流輸出 curl_setopt($curl, CURLOPT_HEADER, 0); //設置獲取的信息以文件流的形式返回,而不是直接輸出。 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //執行命令 $data = curl_exec($curl); //關閉URL請求 curl_close($curl); //顯示獲得的數據 return $data; } }