| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- <?php
 
- namespace 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_userinfo&state='.$time.'#wechat_redirect';
 
-         
 
-         //echo $url;die;
 
-         //self::redirect($url);
 
-         header ( "Location: " . $url);
 
-     }
 
-     public function doCallback() {
 
-         $token = $this->objMemcached->get('access_token');
 
-         $openid = $this->objMemcached->get('openid');
 
-         $data = array();
 
-         if ($token && $openid) {
 
-             $url = 'https://api.weixin.qq.com/sns/auth?access_token='.$token.'&openid='.$openid;
 
-             $result = $this->httpGet($url);
 
-             $result = json_decode($result, true);
 
-             if ($result['errmsg'] != 'ok') {
 
-                 $token = false;
 
-                 $openid = false;
 
-             } else {
 
-                 $data['access_token'] = $token;
 
-                 $data['openid'] = $openid;
 
-             }
 
-         }
 
-         if (!$token) {
 
-             $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']) {
 
-             $this->objMemcached->set('access_token', $data['access_token']);
 
-             $this->objMemcached->set('openid', $data['openid']);
 
-             $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);
 
-             if (isset($data['nickname']) && $data['nickname']) {
 
-                 $refer = urldecode($this->objMemcached->get($this->refer));
 
-                 $param['nickname'] = $data['nickname'];
 
-                 $param['headimgurl'] = $data['headimgurl'];
 
-                 $param['uid'] = $data['openid'];
 
-                 $refer .= '&' . http_build_query($param);
 
-                 header ( "Location: " . $refer);
 
-             } else {
 
-                 print_r($data);die;
 
-             }
 
-             
 
-         } else {
 
-             print_r($data);die;
 
-         }
 
-     }
 
-     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;
 
-     }
 
- }
 
 
  |