Facebook登录问题

时间:2011-07-06 09:08:01

标签: php facebook sdk login

我在我的网站上使用codeigniter,我使用facebook登录登录,但我遇到了问题。 - >当我尝试正常的codeigniter项目时,getUser不会返回任何数据。但是,在与我的项目无关的新文件夹中,我尝试从来自facebook sdk的example.php登录,它运行良好。

我已检查过所有内容(自动加载,配置等) 我认为我的问题是关于会议。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我建议您使用PHP SDK for the Facebook API的新版本。我在版本3.0.1中遇到了同样的问题,这就是为什么我使用预览版本2.1.2,它工作得很好。

不幸的是我没有时间玩新版本(3.0.1)但版本2.1.2有一个非常简单的例子:

配置

/* application/config/autoload.php */
$autoload['libraries'] = array('template', 'session', 'facebook');

/* application/libraries/Facebook.php */
require_once("Facebook/2.1.2/facebook.php");
class CI_Facebook extends Facebook {}

模板

/* application/views/template.php */
$facebook = new Facebook(array(
  'appId' => 'xxxxxxxxxxxxxx',
  'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  'cookie' => true
));

$session = $facebook->getSession();

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// login or logout url will be needed depending on current user state.
if ($me) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}
?>

<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
    FB.init({
      appId   : '<?php echo $facebook->getAppId(); ?>',
      session : <?php echo json_encode($session); ?>, 
      cookie  : true,
      xfbml   : true
    });

    // whenever the user logs in, we refresh the page
    FB.Event.subscribe('auth.login', function() {
      window.location.reload();
    });
  };

  (function() {
    var e = document.createElement('script');
    e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
  }());
  </script>