【问题标题】:How to get the top URL from a Facebook application?如何从 Facebook 应用程序获取顶部 URL?
【发布时间】:2011-02-24 16:26:39
【问题描述】:

如何在 iframe 应用程序中获取顶部 URL(Facebook 的地址)?

有没有好的解决方案?

【问题讨论】:

    标签: php jquery facebook iframe


    【解决方案1】:

    您是指 Facebook 域上的 URL?

    由于Same Origin Policy,这是不可能的。

    【讨论】:

    • 我的意思是,我如何从 iframe 所在的页面获取 url。如果你明白;-)
    • @Simon 你是指 iframe 的 URL 还是包含 iframe 的页面的 URL?
    • @Pekka 包含 iframe 的页面的 URL :)
    • 同源策略仍然适用。
    • @Simon 抱歉,不可能。您不会从父框架获得任何信息。 URL $_SERVER["HTTP_REFERER"] 标头中 - 至少在大多数客户端中 - 您可以在 PHP 中获取和输出
    【解决方案2】:

    您可能可以从 Facebook 发送给页面内加载的应用程序的“signed_request”POST 参数中弄清楚这一点。

    在 PHP 中是:

    $_POST["signed_request"]
    list($encoded_sig, $payload) = explode('.', $signed_request, 2);
    $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
    $page_id = $data["page"]["id"];
    

    如果您想防止技术用户能够欺骗父页面的身份,您可以验证 $encoded_sig;然而,这可能有点矫枉过正。

    $page_id 只是一个数字,因此您需要使用其他 Facebook API(或调用“http://www.facebook.com/pages/k/$page_id”并查看您的位置)重新重定向到)以获取完整的 URL。

    【讨论】:

      【解决方案3】:
      https://www.facebook.com/pages/YOUR_PAGE_NAME/YOUR_PAGE_ID?sk=app_APP_ID&app_data=My%20custom%20data
      

      你可以通过app_data参数传递任何字符串数据

      【讨论】:

        【解决方案4】:

        如果你可以等待第一次加载,你可以使用jQuery:

        $(document).ready(function()
        {
            var myurl = window.location.pathname;
            $.get("test.php", { url: myurl } );
        });
        

        【讨论】:

          猜你喜欢
          • 2012-09-16
          • 2012-03-07
          • 2012-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多