微信公眾號獲取用戶信息-PHP


<?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;
    }
    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM