【问题标题】:What is the best way to link into the frame of Facebook application?链接到 Facebook 应用程序框架的最佳方式是什么?
【发布时间】:2012-02-09 14:19:39
【问题描述】:

我有一个用 PHP 编写的纯 iframe Facebook 应用程序。通过纯粹,我想说直接接近它的 iframe URL 没有任何意义。如果有人意外接近(例如,通过在新选项卡中打开应用程序内部的链接)在 iframe 之外的应用程序 URL,我的应用程序可以通过 JavaScript 识别它并重定向到它在 iframe 中的版本。

但是,我希望的行为是将用户发送到他想要访问的同一 URL,仅在 Facebook 平台 iframe 内。示例:

您认为最好的解决方案是什么?我想到了会话,它们有什么缺点吗?我可以保存原始位置并开始重定向到 iframe,然后找出位置并重定向到 iframe 内的那个页面。如何确保被重定向的用户不会中断该过程,并且不会由于已保存但未解决的重定向而导致以后发生任何不可预测的重定向?用户在我的应用中有多个标签怎么办?标签可以从另一个窃取重定向...

【问题讨论】:

    标签: php javascript facebook redirect


    【解决方案1】:

    例如,将用户重定向到https://apps.facebook.com/my-awesome-app/?page=help 并在您的应用程序中分析查询(或使用 httpd 重写规则)。

    【讨论】:

    • AFAIK 参数不会包含在 Facebook 将为应用程序创建的 iframe 的 URL 中。此规则的唯一例外是 app_data 参数 - 再次,AFAIK。
    • 你说的不对。我刚刚检查过,它对我有用。我已将以下内容添加到我的测试页面 alert(document.location.search);
    • 这很有趣。这是否从 iframe 或父页面获取查询字符串?另外,你能拿到服务器端的参数吗?
    • 另外,参数存在于referrer header alert(document.referrer);
    • 是的,参数也存在于服务器端。我找不到相关文档,所以也许 bububaba 可以根据他的意见说明为什么没有传递参数。
    【解决方案2】:

    以下是我对Page Tab 应用程序的发现。 App on Facebook 应用程序可能根本不正确。

    通常,Facebook 不会将查询字符串参数传递给 iframe 的 URL,因此您不能采用 facebook.com/.../my_app?where=help&page=2 方式。

    然而,它将在签名请求中传递app_data 参数(它是规则 AFAIK 的唯一例外)。但这使您只有一个参数可供使用。您可以通过将其设为 url 编码的 JSON 对象来解决这个问题,实际上包含许多变量。示例:

    facebook.com/.../my_app?app_data=%7bwhere%3a+%22help%22%2c+page%3a+2%7d

    json_decode($signedRequest['app_data']) 和接收在服务器端接收的内容

    array(
        'where' => 'page',
        'page' => 2
    )
    

    从这里开始,由您来执行重定向。您不必使用会话,除非您的用户未登录 facebook 和/或您的应用程序。那你就得把这个复杂一点。我的解决方案是在未登录的情况下使用会话:Facebook app - deep link for new app user

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 1970-01-01
      相关资源
      最近更新 更多