Beispiel #1
0
 public function login($consumerKey = null, $consumerSecret = null, $callback = '', $redirect = true)
 {
     // FIXME: $redirect should probably be allowed to be an object that implements a redirect() method
     $session = ar_loader::session();
     //FIXME: allow different session object to be passed
     if (!$session->id()) {
         $session->start();
     }
     if (isset($callback) && substr((string) $callback, 0, 4) != 'http' && $callback != 'oob') {
         $callback = ar_loader::makeURL() . $callback;
     }
     if (!$this->client instanceof ar_connect_oauthClient) {
         ////FIXME: a real OAuth is also ok
         // FIXME: what if you want a caching client?
         $this->client = ar_connect_oauth::client($consumerKey, $consumerSecret);
         if (ar_error::isError($this->client)) {
             return $this->client;
         }
     }
     $access_token = $session->getvar('access_token');
     $access_token_secret = $session->getvar('access_token_secret');
     if ($access_token && $access_token_secret) {
         $this->client->setToken($access_token, $access_token_secret);
         return true;
     }
     $oauth_verifier = $session->getvar('oauth_verifier');
     $oauth_token = $session->getvar('oauth_token');
     $oauth_token_secret = $session->getvar('oauth_token_secret');
     if (!$oauth_verifier) {
         $oauth_verifier = ar::getvar('oauth_verifier');
         if ($oauth_verifier) {
             $session->putvar('oauth_verifier', $oauth_verifier);
         } else {
             if (!$callback) {
                 $callback = 'oob';
             }
             $info = $this->client->getRequestToken('https://api.twitter.com/oauth/request_token', (string) $callback);
             if (ar_error::isError($info)) {
                 $info->debugInfo = $this->client->debugInfo;
                 return $info;
             }
             $this->client->setToken($info['oauth_token'], $info['oauth_token_secret']);
             $session->putvar('oauth_token', $info['oauth_token']);
             $session->putvar('oauth_token_secret', $info['oauth_token_secret']);
             if ($redirect) {
                 ar_loader::redirect('https://api.twitter.com/oauth/authorize?oauth_token=' . RawUrlEncode($info['oauth_token']));
                 return false;
             } else {
                 return 'https://api.twitter.com/oauth/authorize?oauth_token=' . RawUrlEncode($info['oauth_token']);
             }
         }
     }
     if ($oauth_verifier) {
         $this->client->setToken($oauth_token, $oauth_token_secret);
         $info = $this->client->getAccessToken('https://api.twitter.com/oauth/access_token', '', $oauth_verifier);
         if (ar_error::isError($info)) {
             $info->debugInfo = $this->client->debugInfo;
             return $info;
         }
         $access_token = $info['oauth_token'];
         $access_token_secret = $info['oauth_token_secret'];
         $this->client->setToken($access_token, $access_token_secret);
         $session->putvar('access_token', $access_token);
         $session->putvar('access_token_secret', $access_token_secret);
         return $info;
     }
     return false;
 }
Beispiel #2
0
 public static function session()
 {
     if (!self::$session) {
         self::$session = new ar_loaderSession();
     }
     return self::$session;
 }