所以也许文档已经过时了,或者我就在这里。但我已经完成了一系列FB iframe应用程序(连接),但我正在开始我的第一个FB Connect网站。从localhost运行它,Connect URL为http:// my_external_IP_address
。当我点击我网站上的FB登录按钮时,它会弹出,等待facebook,然后返回我的网站,其中URL位于顶部,http:// mysite/?session={session key, user_id, etc.}
user_id实际上是我的FB ID。因此它认为我已登录。如果我关闭弹出窗口,我就没有登录。我不确定为什么弹出窗口没有正常的fb连接对话框。我正在遵循这些步骤。
(我在http://中添加了空格,因为没有被检测为'垃圾邮件')
html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"
<body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript">
script type="text/javascript">
FB.init("fbkey", "http://127.0.0.1/xd_receiver.htm");
我尝试过使用xd_receiver.htm
,/xd_receiver.htm
(和其他组合),这会打开一个空白页面。使用http://127.0.0.1至少可以做点什么。在我的配置文件中,在所有这些文件之前调用它,它会检查PHP会话密钥 看看他们是否已登录,如果不存在,则查找cookie,如果不存在则执行此操作:
require_once('includes/facebook.php');
$facebook = new Facebook($fbkey, $fbsec);
$user_id = $facebook->get_loggedin_user();
if($user_id > 0){
$user = $ac->getUserFromFB($user_id);
$_SESSION['user_id'] = $user['user_id'];
}
当我将其回显到屏幕进行测试时,user_id始终为空。会话事件也不会发生。所以我不知道它在弹出窗口中做了什么,但我认为Facebook认为它正在登录我。不确定。非常难倒在这一个。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
我个人发现处理facebook连接的最简单方法是使用winscp将我的localhost同步到某个域的服务器。由于fb connect附加到应用程序,因此该应用程序需要绑定到域,这是生成api密钥的位置。在那里的某个地方,你的本地主机不起作用,不出所料。
答案 1 :(得分:0)
我不确定,但我怀疑问题是由于您在本地计算机上运行造成的。
我的猜测是Facebook服务器将无法在127.0.0.1上找到您的计算机,因为这是本地IP地址。您可以尝试使用像whatisyourip.com这样的地方来获取您的实际远程IP并使用它,但即使这样您也需要确保为FB服务器设置必要的端口转发才能到达本地计算机
总而言之,对于这种类型的网站,我认为在外部服务器而不是本地环境上开发会更容易。
顺便说一下,我没有输入FB.init()的第二个参数 - 我只是用
FB.init(fbkey);
如果你还没有,你可以尝试完全解决它是否有帮助。
另外我认为包含facebook FeatureLoader.js的脚本标签应该在你的&lt; / head&gt;之前。标签不在&lt; body&gt;之后标签
答案 2 :(得分:0)
尝试编辑hosts file以指定主机名(无论它是什么,只要您将其设置为与the settings中的应用相关联的主机名)到127.0.0.1,并且然后重新启动浏览器并通过您在hosts文件中设置的域访问本地应用程序。这应该允许您测试大多数与FB相关的功能。主要的例外是Like按钮,因为它依赖于Facebook的服务器也能够访问相关域中的应用程序。
示例主机行:
127.0.0.1 www.example.com
如果您将以上内容添加到/ etc / hosts并重新启动浏览器,则可以使用www.example.com替换您正在测试的URL的“127.0.0.1”组件,它就像域名一样与您的应用相关联确实是www.example.com