zoukankan      html  css  js  c++  java
  • 微信授权的获取用户信息的几种方法

      1 <?php
      2 
      3 class wxcard
      4 
      5 {
      6 
      7     private $wxinfo = '';
      8 
      9     //public $error = array();
     10 
     11 
     12 
     13     function __construct($wxinfo) {
     14 
     15         $this->wxinfo = $wxinfo;
     16 
     17         
     18 
     19     }
     20 
     21 //demo  获取用户微信 信息
     22 
     23  /* public function get_user_openid()
     24 
     25   {
     26 
     27          //判断是不是微信is_weixin()  is_mobile()
     28 
     29       $wx_user['appid'] = '';
     30 
     31       $wx_user['appSecret'] = '';
     32 
     33       $wxCardPack = new Wxcard($wx_user);
     34 
     35   
     36 
     37      $url = "https://lepay.51ao.com/merchants.php?m=Index&c=index&a=addbonus&mid=$b";
     38 
     39      $info_arr = $wxCardPack->auth_openid($url);
     40 
     41       //$this->fanSave($info_arr,$b);
     42 
     43       //header("Location:".WUYI_PATH."merchants.php?m=Index&c=index&a=bonus&mid=$b");die;
     44 
     45   }*/
     46 
     47     public function one_openid($url) 
     48 
     49     {
     50 
     51       
     52 
     53     if (empty($_GET['code'])){
     54 
     55       //echo '2';die;
     56 
     57         $_SESSION['weixinstate'] = md5(uniqid());
     58 
     59         $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->wxinfo['appid'] . '&redirect_uri=' . urlencode($url) . '&response_type=code&scope=snsapi_base&state=1#wechat_redirect';
     60 
     61         header('Location: ' . $oauthUrl);
     62 
     63         exit;
     64 
     65     } else if (isset($_GET['code'])) {
     66 
     67     //echo $_GET['code'];die;
     68 
     69         $jsonrt = $this->post('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->wxinfo['appid'] . '&secret=' . $this->wxinfo['appSecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code');
     70 
     71         $jsonrt = json_decode($jsonrt,true);
     72 
     73         if ($jsonrt['errcode'] || empty($jsonrt['openid'])) {
     74 
     75         return array('error' => 1, 'msg' => '授权发生错误:' . $jsonrt['errcode']);
     76 
     77         }
     78 
     79         if ($jsonrt['openid']) {
     80 
     81           $openid = $jsonrt['openid'];
     82 
     83           return array('openid' => $openid);die;        
     84 
     85         }
     86 
     87     } else {
     88 
     89         return array('error' => 2);
     90 
     91     }
     92 
     93 
     94 
     95     }
     96 
     97 
     98 
     99 
    100 
    101      public function auth_openid($url) 
    102 
    103     {
    104 
    105         
    106 
    107         if (empty($_GET['code'])){
    108 
    109             //echo '2';die;
    110 
    111             $_SESSION['weixinstate'] = md5(uniqid());
    112 
    113             $oauthUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' . $this->wxinfo['appid'] . '&redirect_uri=' . urlencode($url) . '&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect';
    114 
    115             header('Location: ' . $oauthUrl);
    116 
    117             exit;
    118 
    119         } else if (isset($_GET['code'])) {
    120 
    121         //echo $_GET['code'];die;
    122 
    123             $jsonrt = $this->post('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->wxinfo['appid'] . '&secret=' . $this->wxinfo['appSecret'] . '&code=' . $_GET['code'] . '&grant_type=authorization_code');
    124 
    125         $jsonrt = json_decode($jsonrt,true);
    126 
    127             if ($jsonrt['errcode'] || empty($jsonrt['openid'])) {
    128 
    129                 return array('error' => 1, 'msg' => '授权发生错误:' . $jsonrt['errcode']);
    130 
    131             }
    132 
    133             if ($jsonrt['openid']) {
    134 
    135                 //$_SESSION['openid'] = $jsonrt['openid'];
    136 
    137                 //var_dump($jsonrt);die;
    138 
    139                 $access_token=$jsonrt['access_token'];
    140 
    141                 $openid = $jsonrt['openid'];
    142 
    143                 
    144 
    145                 //$userinfo_url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=$access_token&openid=$openid&lang=zh_CN";
    146 
    147                 $userinfo_url="https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid";
    148 
    149                 $userinfo_json=$this->post($userinfo_url);
    150 
    151                 $userinfo_array=json_decode($userinfo_json,true);
    152 
    153                 return $userinfo_array;                               
    154 
    155                 //var_dump($userinfo_array);die;                
    156 
    157             }
    158 
    159         } else {
    160 
    161             return array('error' => 2);
    162 
    163         }
    164 
    165 
    166 
    167     }
    168 
    169    public function GetwxUserInfoByOpenid($wxAccessToken,$openid){     
    170       $url    = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $wxAccessToken.'&openid='.$openid.'&lang=zh_CN';
    171       $result = $this->post($url);
    172       $result = json_decode($result,true); 
    173       return $result;      
    174   }
    175 
    176   public function getToken()
    177   {
    178       //getToken
    179         $filename = PIGCMS_PATH.'/upload/token/accesstoken';
    180        // echo $filename;die;
    181       if(!file_exists($filename) || (file_exists($filename) && (time()-filemtime($filename)) > 5000)){
    182         //1.url地址
    183         $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->wxinfo['appid'].'&secret='.$this->wxinfo['appSecret'];
    184         //2.判断是否为post请求
    185         //3.发送请求
    186         $content = $this->post($url);
    187         //4.处理返回值
    188         //返回数据格式为json,php不可以直接操作json格式,需要json_decode转化一下
    189         $content = json_decode($content);
    190         $access_token = $content->access_token;
    191         //把access_token保存到文件
    192         file_put_contents($filename, $access_token);
    193       }
    194       //如果没有过期,那么就去读取缓存文件里的access_token
    195       else{
    196         $access_token = file_get_contents($filename);
    197       }
    198       //把access_token返回
    199         return $access_token;
    200     }
    201 
    202 
    203 
    204     public function post($url)
    205 
    206     {
    207 
    208     // 创建curl对象
    209 
    210     $ch = curl_init ();
    211 
    212     // 配置这个对象
    213 
    214     curl_setopt ($ch, CURLOPT_URL, $url);  // 请求的URL地址
    215 
    216     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
    217 
    218     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
    219 
    220 
    221 
    222     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  // 返回接口的结果,而不是输出
    223 
    224 
    225 
    226     // 发出请求
    227 
    228     $data = curl_exec ( $ch );
    229 
    230     if(curl_errno($ch))
    231 
    232     {
    233 
    234         return 'error'.curl_error($ch);
    235 
    236     }
    237 
    238     // 关闭对象
    239 
    240     curl_close ( $ch );
    241 
    242     // 返回数据
    243 
    244     return $data;
    245 
    246     }
    247 
    248 }
    View Code
  • 相关阅读:
    Java Web表达式注入
    Mysql:The Federated Storage Engine:联合(联盟)存储引擎:【远程连接】服务器引擎
    Mysql:16.11.1 Pluggable Storage Engine Architecture
    Mysql:Server Logs:mysqld服务器的各种日志
    Mysql:InnoDB Table Compression and InnoDB Page Compression:适用于InnoDB的:表压缩 & 页压缩
    Mysql:Redo Log
    kubectl相关指令
    使用alias简化kubectl输入
    使用Minikube运行一个本地单节点Kubernetes集群(阿里云)
    Javascript去掉base64中的回车换行
  • 原文地址:https://www.cnblogs.com/lujiang/p/7280977.html
Copyright © 2011-2022 走看看