我在我的网站上使用codeigniter,我使用facebook登录登录,但我遇到了问题。 - >当我尝试正常的codeigniter项目时,getUser不会返回任何数据。但是,在与我的项目无关的新文件夹中,我尝试从来自facebook sdk的example.php登录,它运行良好。
我已检查过所有内容(自动加载,配置等) 我认为我的问题是关于会议。
感谢您的帮助。
答案 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>