【问题标题】:Facebook Connect from Localhost, doing some weird stuff来自 Localhost 的 Facebook Connect,做一些奇怪的事情
【发布时间】:2011-01-02 03:18:37
【问题描述】:

所以也许文档已经过时了,或者我刚刚离开这里。但我已经完成了大量 FB iframe 应用程序(连接),但我正在启动我的第一个 FB Connect 站点。从 localhost 运行它,连接 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. 最后,在正文关闭标记之前: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 认为它正在让我登录。不确定。相当难倒这个。任何帮助,将不胜感激。谢谢!

【问题讨论】:

    标签: php facebook localhost


    【解决方案1】:

    我个人发现处理 facebook 连接的最简单方法是使用 winscp 将我的 localhost 同步到具有某个域的服务器。由于 fb connect 附加到应用程序,因此该应用程序需要绑定到域,这是生成 api 密钥的地方。不出所料,您的本地主机在那里的某个地方无法正常工作。

    【讨论】:

      【解决方案2】:

      我不确定,但我怀疑问题是由于您在本地计算机上运行造成的。

      我的猜测是 Facebook 服务器将无法在 127.0.0.1 上找到您的机器,因为那是本地 IP 地址。您可以尝试使用 whatisyourip.com 之类的地方来获取您的实际远程 IP 并使用它,但即便如此,您仍需要确保为 FB 服务器设置了必要的端口转发,以便能够访问您的本地计算机.

      总而言之,对于这种网站,我认为在外部服务器而不是本地环境上开发会更容易。

      顺便说一句,我不必为 FB.init() 输入第二个参数 - 我只需使用

      FB.init(fbkey);
      

      如果您还没有,您可以尝试将其完全取出,看看是否有帮助。

      另外我认为包含 facebook FeatureLoader.js 的脚本标签应该在你的 标签之前而不是在

      标签之后

      【讨论】:

      • 我尝试从 FB.init() 中删除 xd_receiver 文本,将 127.0.0.1 更改为我的外部 IP(虽然,这只是 FB.init JS 函数的参考,所以我认为本地是很好),然后我将功能加载器删除到了 head 标签。并尝试了三者的组合,但没有成功。仍然在弹出窗口中打开我的网站。不过感谢您的帮助。
      【解决方案3】:

      尝试编辑您的hosts file 指向一个主机名(不管它是什么,只要您将其设置为与the settings 中的应用关联的主机名)为127.0.0.1,然后重新启动您的浏览器并通过您在 hosts 文件中设置的域访问您的本地应用程序。这应该允许您测试大多数与 FB 相关的功能。主要的例外是“赞”按钮,因为它取决于 Facebook 的服务器也能够在相关域中访问您的应用。

      示例主机行:

      127.0.0.1    www.example.com
      

      如果您将上面的内容添加到您的 /etc/hosts 并重新启动浏览器,则可以将您正在测试的 URL 的“127.0.0.1”组件替换为 www.example.com,它就像域一样与您的应用关联的确实是 www.example.com

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多