zoukankan      html  css  js  c++  java
  • 微信授权相关接口

    <?php
    
    /**
     * 微信授权相关接口
     *
     * @link http://www.phpddt.com
     */
    
    class Wechat {
    
        //高级功能-》开发者模式-》获取
        private $app_id = 'xxx';
        private $app_secret = 'xxxxxxx';
    
    
        /**
         * 获取微信授权链接
         *
         * @param string $redirect_uri 跳转地址
         * @param mixed $state 参数
         */
        public function get_authorize_url($redirect_uri = '', $state = '')
        {
            $redirect_uri = urlencode($redirect_uri);
            return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";
        }
    
        /**
         * 获取授权token
         *
         * @param string $code 通过get_authorize_url获取到的code
         */
        public function get_access_token($app_id = '', $app_secret = '', $code = '')
        {
            $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$this->app_id}&secret={$this->app_secret}&code={$code}&grant_type=authorization_code";
            $token_data = $this->http($token_url);
    
            if($token_data[0] == 200)
            {
                return json_decode($token_data[1], TRUE);
            }
    
            return FALSE;
        }
    
        /**
         * 获取授权后的微信用户信息
         *
         * @param string $access_token
         * @param string $open_id
         */
        public function get_user_info($access_token = '', $open_id = '')
        {
            if($access_token && $open_id)
            {
                $info_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$open_id}&lang=zh_CN";
                $info_data = $this->http($info_url);
    
                if($info_data[0] == 200)
                {
                    return json_decode($info_data[1], TRUE);
                }
            }
    
            return FALSE;
        }
    
        public function http($url, $method, $postfields = null, $headers = array(), $debug = false)
        {
            $ci = curl_init();
            /* Curl settings */
            curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
            curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);
            curl_setopt($ci, CURLOPT_TIMEOUT, 30);
            curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
    
            switch ($method) {
                case 'POST':
                    curl_setopt($ci, CURLOPT_POST, true);
                    if (!empty($postfields)) {
                        curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
                        $this->postdata = $postfields;
                    }
                    break;
            }
            curl_setopt($ci, CURLOPT_URL, $url);
            curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ci, CURLINFO_HEADER_OUT, true);
    
            $response = curl_exec($ci);
            $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
    
            if ($debug) {
                echo "=====post data======
    ";
                var_dump($postfields);
    
                echo '=====info=====' . "
    ";
                print_r(curl_getinfo($ci));
    
                echo '=====$response=====' . "
    ";
                print_r($response);
            }
            curl_close($ci);
            return array($http_code, $response);
        }
    
    }
  • 相关阅读:
    ORM是什么?
    mysql 杂谈
    IO model之IO多路复用的触发方式
    IO model之select poll epoll IO多路复用介绍
    IO model
    事件驱动模型介绍
    函数
    商品程序
    随机生成密码
    import radom 和import string
  • 原文地址:https://www.cnblogs.com/xujing6/p/6073171.html
Copyright © 2011-2022 走看看