Domanda

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;
}
È stato utile?

Soluzione

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top