| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?phpnamespace Cas\Controller;use KIF\Cache\Memcached;use KIF\Core\Config;use KIF\Core\Request;/** *  * Login * @author rabin * */class Login extends Controller{        private $appId;    private $appSecret;        public function __construct() {        $wechat_cfg = Config::getInstance()->get('wechat_cfg');        $this->appSecret = $wechat_cfg['appSecret'];        $this->appId = $wechat_cfg['appId'];        $this->objMemcached = new Memcached();        $this->refer = 'accessTokenRefer';    }    public function doGet() {        $refer = Request::g ( 'referer' );        $this->objMemcached->set($this->refer, $refer);        $host = Config::getInstance ()->get ( 'App_Id' );        $callback = urlencode($host . '?c=Login&a=Callback');        $time = time() . rand(0,100);        $url = 'https://open.weixin.qq.com/connect/qrconnect';        $url = 'https://open.weixin.qq.com/connect/oauth2/authorize';        $url .= '?appid='.$this->appId.'&redirect_uri='.$callback.'&response_type=code&scope=snsapi_login&state='.$time.'#wechat_redirect';                //echo $url;die;        //self::redirect($url);        header ( "Location: " . $url);    }    public function doCallback() {        $code = Request::g ( 'code' );        $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->appId.'&secret='.$this->appSecret.'&code='.$code.'&grant_type=authorization_code';        $data = $this->httpGet($url);        $data = json_decode($data, true);        if (isset($data['access_token']) && $data['access_token']) {            $url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $data['access_token'] . '&openid=' . $data['openid'] . '&lang=zh_CN';            $data = $this->httpGet($url);            $data = json_decode($data, true);            $refer = $this->objMemcached->get($this->refer);            $param = $data;            $param['uid'] = $data['openid'];            $refer .= '&' . http_build_url($param);            header ( "Location: " . $refer);        }    }    private function httpGet($url) {        $curl = curl_init();        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);        curl_setopt($curl, CURLOPT_TIMEOUT, 500);        curl_setopt($curl, CURLOPT_URL, $url);        $res = curl_exec($curl);        curl_close($curl);        return $res;    }}
 |