【发布时间】: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">
然后,在我的<body> 标签之后,我添加:
<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。所以这是我最终得到的代码,位于我的 </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>
现在我可以将 XFBML 实体添加到我的页面中,例如 <fb:login-button></fb:login-button>,它可以按预期工作。我点击它,它会弹出一个框,询问我是否要允许我的网站访问我的 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->data['fb_user']); 我什么也得不到。曾经。无论我是否登录到 facebook、注销、登录并将我的网站添加到我的个人资料等等等等。用户和 user_id 永远不会设置。不过我没有收到任何错误。
据我所知,应该设置这些值,以便我知道浏览我网站的人是否登录到他们的 Facebook 帐户。如果是,我可以查看他们是否允许我的申请。如果他们允许,我可以让他们断开与我的站点的连接,如果不允许,我可以让他们连接。但是如果没有填充这些变量,我将无能为力。
我尝试在图书馆的源代码中四处寻找,但我真的无法理解它。我希望实际的解决方案不会涉及破解图书馆。我希望 CodeIgniter 特定的库能够工作。
有什么想法吗?
非常感谢。 :)
【问题讨论】:
-
Facebook 有一个官方的 php-sdk,可以在 codeigniter 中运行良好...jondavidjohn.com/b/P
标签: php javascript codeigniter facebook