예제 #1
0
 public function sinalogin()
 {
     $loginconfig = FS("Webconfig/loginconfig");
     define("WB_AKEY", $loginconfig['sina']['akey']);
     define("WB_SKEY", $loginconfig['sina']['skey']);
     define("WB_CALLBACK_URL", "http://" . $_SERVER['HTTP_HOST'] . __APP__ . '/member/oauth/sinalogin');
     require C("APP_ROOT") . "Lib/Oauth/sina/saetv2.ex.class.php";
     $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = WB_CALLBACK_URL;
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
     }
     if (isset($_REQUEST['error_code'])) {
         if ($_REQUEST['error_code'] == '21330') {
             $this->redirect(__APP__ . "/member/common/login");
         }
     }
     if ($token) {
         $_SESSION['token'] = $token;
     } else {
         exit("Error happenned, please try again.");
     }
     $sinauser = $o->getUserShow(text($token['uid']));
     // 		$sinauser['name'] = sprintf("%05d",rand(1,99999));
     $map['openid'] = text($token['uid']);
     //唯一ID
     $map['site'] = 'sina';
     $this->appCk($map, $sinauser['name']);
     //nickname
 }