【问题标题】:Adding Facebook Connect to a CodeIgniter website将 Facebook Connect 添加到 CodeIgniter 网站
【发布时间】:2010-06-27 20:02:07
【问题描述】:

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

我要做的就是删除我尝试过的所有内容,并引导您逐步完成我的步骤,直到它停止工作。

第 1 步:设置 JavaScript SDK 和 XFBML

首先,我在<html> 标签中添加对 FBML 规范的引用:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">

然后,在我的&lt;body&gt; 标签之后,我添加:

<script src="http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>

现在是我遇到的第一个问题but have now solved。问题是 JavaScript SDK 的文档说 FB.init() 方法 requires the appId 作为参数,但事实证明这是不正确的。我需要传递我的 apiKey。所以这是我最终得到的代码,位于我的 &lt;/body&gt; 标签之前:

<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>

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

所以这一步工作正常。

第 2 步:设置 PHP 库

好的,现在我需要添加 PHP 库。因此,在谷歌上快速搜索“codeigniter facebook library”会显示Elliot Haughin's library。我下载文件,将它们全部放在正确的位置,然后开始加载库。

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

$this->load->library('facebook_connect');
$this->data['fb_user'] = $this->facebook_connect->user;
$this->data['fb_userid'] = $this->facebook_connect->user_id;

但如果我这样做 print_r($this-&gt;data['fb_user']); 我什么也得不到。曾经。无论我是否登录到 facebook、注销、登录并将我的网站添加到我的个人资料等等等等。用户和 user_id 永远不会设置。不过我没有收到任何错误。

据我所知,应该设置这些值,以便我知道浏览我网站的人是否登录到他们的 Facebook 帐户。如果是,我可以查看他们是否允许我的申请。如果他们允许,我可以让他们断开与我的站点的连接,如果不允许,我可以让他们连接。但是如果没有填充这些变量,我将无能为力。

我尝试在图书馆的源代码中四处寻找,但我真的无法理解它。我希望实际的解决方案不会涉及破解图书馆。我希望 CodeIgniter 特定的库能够工作。

有什么想法吗?

非常感谢。 :)

【问题讨论】:

  • Facebook 有一个官方的 php-sdk,可以在 codeigniter 中运行良好...jondavidjohn.com/b/P

标签: php javascript codeigniter facebook


【解决方案1】:

试试 Github 上 Danny Tran 的 this Facebook Library。效果很好,而且很容易设置。

【讨论】:

    【解决方案2】:

    您正在加载新的 (http://connect.facebook.net/en_US/all.js) 和旧的 (http://static.new.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php) JS SDK。删除对旧版本的引用。新的 JS SDK 将设置一个签名的 cookie,可以使用新的 PHP SDK(安全地)读取它:http://github.com/facebook/php-sdk。这个 JS SDK 的身份验证示例也可能有帮助:http://fbrell.com/auth/all-in-one

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        您是否将 xd_reciever 文件添加到您的公共目录中????

        这可能会导致问题 bcoz xd_reciever 定义您的应用与 facebook 之间的通道。

        【讨论】:

          【解决方案5】:

          这篇文章可能对你有用。 Check it out.

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-24
            • 1970-01-01
            • 1970-01-01
            • 2012-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-27
            相关资源
            最近更新 更多