将Facebook Connect添加到CodeIgniter网站

Jos*_*eld 12 javascript php facebook codeigniter

我在尝试将我的网站连接到Facebook时遇到问题.我想要做的是允许用户通过将他们连接到Facebook来增加他们的帐户(我不需要人们能够使用Facebook登录,我使用的是OpenID).我的网站运行在CodeIgniter框架中.

我要做的就是删除我尝试过的所有内容,然后引导你完成我的步骤直到它停止工作.

第1步:设置JavaScript SDK和XFBML

首先,我将FBML规范的引用添加到我的<html>标记中:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
Run Code Online (Sandbox Code Playgroud)

然后,在我的<body>标签之后,我添加:

<script src="http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

现在我遇到了第一个问题但现在已经解决了.问题是JavaScript SDK的文档说该FB.init()方法需要appId作为参数,但结果证明这是不正确的.我需要通过我的apiKey.所以这是我最终得到的代码,它在我的</body>标记之前:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
    FB.init({
        apiKey  : '<?php echo $this->config->item('facebook_api_key'); ?>',
        status : true,
        cookie : true,
        xfbml  : true
    });

</script>
Run Code Online (Sandbox Code Playgroud)

现在我可以将XFBML实体添加到我的页面中,例如<fb:login-button></fb:login-button>它可以按预期工作.我点击它然后会弹出一个框,询问我是否允许我的网站访问我的Facebook个人资料.我说是的,然后如果我在Facebook上检查我的应用程序设置,我可以看到我的网站已被添加.

所以这一步很好.

第2步:设置PHP库

好的,现在我需要添加PHP库.因此,快速谷歌搜索'codeigniter facebook库'会显示Elliot Haughin的图书馆.我下载文件,将它们放在正确的位置,然后开始加载库.

现在出现了当前的问题.我将以下代码(取自库中给出的示例)添加到我的控制器构造函数中,以便它在每个页面上发生:

$this->load->library('facebook_connect');
$this->data['fb_user'] = $this->facebook_connect->user;
$this->data['fb_userid'] = $this->facebook_connect->user_id;
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,print_r($this->data['fb_user']);我什么也得不到.永远.我是否登录Facebook,登出,登录并将我的网站添加到我的个人资料等等.用户和user_id永远不会设置.我没有收到任何错误.

据我所知,应该设置这些值,以便我知道浏览我网站的人是否登录了他们的Facebook帐户.如果他们是,我可以看看他们是否允许我的申请.如果他们允许,我可以让他们与我的网站断开连接,如果没有,我可以让他们连接.但如果没有填充这些变量,我就无法做任何事情.

我试过在图书馆的内容中探索,但我真的无法理解它.而且我希望实际的解决方案不会涉及将图书馆分开.我希望CodeIgniter特定的库可以工作.

有任何想法吗?

非常感谢.:)

Dwa*_*ton 2

试试这个由 Danny Tran 在 Github 上托管的Facebook 库。效果非常好,而且设置起来相当容易。