Facebook从Localhost连接,做一些奇怪的事情

时间:2010-01-06 16:38:10

标签: php facebook localhost

所以也许文档已经过时了,或者我就在这里。但我已经完成了一系列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://中添加了空格,因为没有被检测为'垃圾邮件')

  1. html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml"
  2. <body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript">
  3. 之后
  4. 最后,在身体关闭标记之前: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至少可以做点什么。
  5. 在我的配置文件中,在所有这些文件之前调用它,它会检查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认为它正在登录我。不确定。非常难倒在这一个。任何帮助,将不胜感激。谢谢!

3 个答案:

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