0

抱歉,如果有这样的问题后,我检查了,但我找不到任何..我用tank_auth_social对Facebook登录笨Tank_Auth_Social的Facebook登录引发异常

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

也有人首次登录会抛出异常是这样提到的问题,这个问题,但没有答复..

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

用户给予来自Facebook的访问之后。

致命错误:未捕获OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。扔在/home/hayvanse/public_html/application/libraries/facebook/base_facebook.php在线1058

是的,所以我们不能有写令牌这意味着是啊?但是,当我点击登录,它的作品。 第一个只给出了一个问题的例外,而不是我想的Facebook令牌。

我真的很新手在Facebook连接的东西,我更新了Facebook和base_facebook库,但没有工作。

我希望有这个问题,可以帮助我。这是基于功能在这一行,所以我不知道如果我只是跳过例外,我真的很困惑,找了一整晚:(

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

请使用此功能更新base_book,检查链接请。主要问题是的getUser被returnin 0。你必须更新像base_Facebook文件打击代码。(最新的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