【问题标题】:Pass a parameter to Facebook Page Tab app将参数传递给 Facebook Page Tab 应用
【发布时间】:2014-07-06 19:39:51
【问题描述】:

我在这个 URL 上有这个 HTML:https://myapp.herokuapp.com

<html>
<body>
<iframe frameborder=0 border=0 scrolling="no" src="<?php echo $_GET['url']; ?>" width="760px" height="521px"></iframe>
</body>
</html>

我创建了一个 Facebook 页面选项卡,我希望任何人都可以使用不同的 URL 将它安装在他们的 Facebook 页面上。因此,当您单击 FB Page 1 上的选项卡时,它将显示嵌入的 URL1,FB Page 2 将显示 URL2,依此类推。因此,该 URL 是您安装 Page Tab 时的一个参数。

我试过这个:

https://www.facebook.com/dialog/pagetab?app_id=XXXXXXXXXX&next=https://myapp.herokuapp.com?url=HERE_YOUR_URL

它正在安装应用程序,但 iframe 中的 URL 参数似乎为空。我做错了什么?

谢谢

【问题讨论】:

  • 下一个 URL 就是您接下来要去的地方。不是安装的网址。安装的 URL 是在 Developer App Settings 中定义的 URL
  • 所以如果我想动态地创建这些 Page Tab 应用程序,每个应用程序都有不同的参数,我做不到吗?
  • 我认为这不可能

标签: facebook facebook-graph-api facebook-page facebook-iframe


【解决方案1】:

据我了解,无法在单独的页面选项卡中安装应用程序。您需要为此创建不同的应用程序,但您可以使用相同的“基本应用程序”位置并使用所需的参数来扩充位置。

例如:

  1. 您创建了两个以“Page Tab”为平台的应用程序。
  2. 对于第一个应用,指定一个页面标签 URL https://myapp.herokuapp.com/index.php?test=1
  3. 对于第一个应用,指定页面标签 URL https://myapp.herokuapp.com/index.php?test=2
  4. 在您的应用程序基础文件夹中创建一个index.php

    &lt;? echo $_GET["test"]; ?&gt;

  5. 将两个页面选项卡应用程序添加到页面(或单独的页面)。请参阅:https://developers.facebook.com/docs/graph-api/reference/v2.0/page/tabs/#publishhttps://developers.facebook.com/docs/reference/dialogs/add_to_page/

  6. 打开第一个页面选项卡,然后打开第二个,看到显示了不同的参数结果

【讨论】:

  • 嗨。感谢您的回答。我真的需要一个应用程序,我负担不起创建数百个应用程序。例如,TwitterTab 做了我需要做的事情,将你的个人数据放在你的标签中。 facebook.com/ZapatosCastellano/app_142847962439861我该怎么做?
  • Facebook 应用程序没有此类限制。我从个人经验中知道,一个应用程序可以安装在多个页面上,我已经安装了 3 个以上。但是,由于“出于我的不理解……”,我认为没有理由对此投反对票。
  • 我的意思是一个应用程序位于同一页面的多个页面选项卡中......而且,他想传递一个 URL 参数。那你会怎么做呢?
  • 啊,这很可能是不可能的。是的,URL 参数是难以破解的难题。 :)
【解决方案2】:

我的方法有点不同。

虽然可能无法使用 URL 参数安装应用程序,但您可以根据首先加载它们的页面来调整它们的内容。正如页面选项卡 Facebook API 集成教程所述:

当用户选择您的页面选项卡时,您将收到 signed_request 参数和一个附加参数 page。该参数包含 带有 id(当前页面的页面 id)的 JSON 对象 (SOURCE)

因此,您将在 几个 页面上安装 same 应用,并在顶部使用以下代码(在您创建 $facebook 对象之后):

$page_id = "";
$sr = $facebook->getSignedRequest();
if($page = $sr['page']) {
    $page_id = $page['id'];
}

您现在应该可以使用$page_id 作为唯一标识符,告诉您用户当前正在从哪个页面查看应用程序,而不是使用$_GET 变量。 Switch 语句或数据库集成是首先想到的方法,但您似乎在问如何识别和检索唯一参数,而不是如何使用它,所以我相信你会自己解决这个问题。 :)

注意:这(显然)不适用于安装在同一页面的多个页面选项卡上的应用,但这似乎不是你的问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多