将参数传递给Facebook页面选项卡应用程序

时间:2014-05-18 22:50:53

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

我在此网址上有此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页面1上的选项卡时,它将显示嵌入的URL1,FB Page 2将显示URL2,依此类推。然后,当您安装页面选项卡时,该URL是一个参数。

我试过这个:

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

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

由于

2 个答案:

答案 0 :(得分:8)

我的方法略有不同。

虽然可能无法安装带有网址参数的应用,但您可以根据首先加载它们的网页来调整其内容。页面标签Facebook API集成教程指出:

  

当用户选择您的页面标签时,您将收到 signed_request       带有一个附加参数页面的参数。此参数包含       具有 id 的JSON对象(当​​前页面的页面ID)(SOURCE

因此,您需要在多个页面上安装相同的应用,并在顶部使用以下代码(在您创建$facebook之后对象):

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

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

注意:这显然不适用于同一页的多个页面标签上安装的应用,但这似乎不是您的担忧。

答案 1 :(得分:0)

根据我的理解,不可能在单独的页面标签中安装应用程序。您需要为此创建不同的应用,但您可以使用相同的&#34;基本应用&#34;位置并使用所需参数扩充位置。

例如:

  1. 使用&#34; Page Tab&#34;创建两个应用程序作为平台。
  2. 对于第一个应用,请指定网页标签网址https://myapp.herokuapp.com/index.php?test=1
  3. 对于第一个应用,请指定网页标签网址https://myapp.herokuapp.com/index.php?test=2
  4. 在您的应用基础文件夹中创建index.php

    <? echo $_GET["test"]; ?>

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

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