我想将用户重定向到他目前在他拥有的Facebook页面上安装的页面标签。 为了使这个明确我正在谈论Facebook页面选项卡的安装过程。 我在同一方向发现了几个问题,但我找不到正确的方法来做到这一点。 这是安装页面选项卡的标准链接。
“https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&next=YOUR_URL”
因为我不知道用户将在哪个页面上安装标签,所以我无法正确设置下一个网址。 这将导致我重定向到某个页面,我试图获取这些信息。但是,我无法提取有关他通过签名请求或网址架构使用的页面的信息。 有时网址包含选项卡安装页面的ID,但这似乎结束了。
“HTTPS:// URL / tabs_added%5B379396442071062%= 5D 1# = 的”
编辑:此网址包含ID为数组编码,感谢@ifaour:%5B379396442071062%5D - > 379396442071062
在我看来,对于页面选项卡来说,这是一个标准用例,我无法相信实际执行此操作或找到解决方案很难。
希望你能帮忙!
答案 0 :(得分:4)
我猜当前的逻辑并没有错。由于您可以使用Add Page Tab dialog一次将应用添加到多个页面,因此Facebook可让您控制下一步。
Facebook将从对话框中返回管理员所选页面的ID,并且由于结果可能是多个ID,因此不建议将管理员重定向到Facebook页面选项卡,即使可以使用以下内容:
https://www.facebook.com/pages/-/PAGE_ID?sk=app_APP_ID
现在考虑的一个好习惯是列出成功添加应用程序的页面(并且可能提供一些“演示”或“后续步骤”以更好地宣传您的解决方案)。
这是一个处理响应的快速代码:
<?php
if(!empty($_GET['tabs_added'])) {
$tabs_ids = array_keys($_GET['tabs_added']);
$comma_separated_ids = implode(",", $tabs_ids);
$api_call = "https://graph.facebook.com/fql?q=SELECT+page_url,pic,name+FROM+page+WHERE+page_id+IN+($comma_separated_ids)";
$fql_query_result = file_get_contents($api_call);
$result = json_decode($fql_query_result, true);
if(!empty($result["data"])) {
echo "Congratulations! You have successfully added our App to the following pages:<br />";
foreach($result["data"] as $page) {
echo "<img src=\"{$page['pic']}\" alt=\"{$page['name']}\" /> <a href=\"{$page['page_url']}\">{$page['name']}</a><br />";
}
}
} else {
echo "It seems that you didn't add our awesome app to any of your pages. Want to <a href=\"https://www.facebook.com/dialog/pagetab?app_id=APP_ID&next=". urlencode("YOUR_URL") . "\">try again<a/>?";
}
此代码将检查用户是否取消了再次鼓励他们的对话框。并检索所选页面的名称,图片和链接以列出它们。
免责声明:此代码只是一个示例,可能无法在FQL查询中检索私有和未发布的页面。