Codeigniter Tank_Auth_Social Facebook Login Throwing Exception-Collection of common programming errors

Sorry If there is a post like this question, I checked but I couldn’t find any..

I’m using tank_auth_social for Facebook login.

https://github.com/sicsol/Tank-Auth-Social

Also someone mentioned this problem on issues but no reply..

https://github.com/sicsol/Tank-Auth-Social/issues/2

After user giving access from Facebook at first login it throws exception like this.

Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home/hayvanse/public_html/application/libraries/facebook/base_facebook.php on line 1058

Yeah so we couldn’t have write token it means that yeah? But when I click to login and it works. The first one only gives exception due to one problem and its not about Facebook token I think.

I’m really newbie on Facebook connect stuff, I updated Facebook and base_facebook library but didn’t work.

I hope had this problem and could help me. This is based function on this line so I wonder if I just skip exception,I’m really confused and looked for it all night 🙁

protected function throwAPIException($result) {
$e = new FacebookApiException($result);
switch ($e->getType()) {
  // OAuth 2.0 Draft 00 style
  case 'OAuthException':
    // OAuth 2.0 Draft 10 style
  case 'invalid_token':
    // REST server errors are just Exceptions
  case 'Exception':
    $message = $e->getMessage();
  if ((strpos($message, 'Error validating access token') !== false) ||
      (strpos($message, 'Invalid OAuth access token') !== false)) {
    $this->setAccessToken(null);
    $this->user = 0;
    $this->clearAllPersistentData();
  }
}

throw $e;
}
  1. Please update base_book with this function , check the link please. Main problem was getuser was returnin 0. You have to update code like blow on base_Facebook file.(latest sdk)

    protected function getCode() {
    $server_info = array_merge($_GET, $_POST, $_COOKIE);
    
    if (isset($server_info['code'])) {
        if ($this->state !== null &&
                isset($server_info['state']) &&
                $this->state === $server_info['state']) {
    
            // CSRF state has done its job, so clear it
            $this->state = null;
            $this->clearPersistentData('state');
            return $server_info['code'];
        } else {
            self::errorLog('CSRF state token does not match one provided.');
            return false;
        }
    }
    
    return false;
    
    }
    

    When using CodeIgniter + Facebook PHP SDK: getUser() always returns 0