我在此网址上有此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。我做错了什么?
由于
答案 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;位置并使用所需参数扩充位置。
例如:
https://myapp.herokuapp.com/index.php?test=1
https://myapp.herokuapp.com/index.php?test=2
在您的应用基础文件夹中创建index.php
:
<? echo $_GET["test"]; ?>
将两个Page Tab应用添加到一个页面(或单独的页面)。请参阅:https://developers.facebook.com/docs/graph-api/reference/v2.0/page/tabs/#publish或https://developers.facebook.com/docs/reference/dialogs/add_to_page/