Facebook 在“权限”对话框后重定向到“已安装页面”选项卡

Facebook 在“权限”对话框后重定向到“已安装页面”选项卡,facebook,redirect,tabs,Facebook,Redirect,Tabs,我想将用户重定向到他当前安装在他拥有的facebook页面上的页面选项卡。 为了说明这一点,我正在谈论facebook页面标签的安装过程。 我在同一个方向上发现了几个问题,但我找不到正确的方法。 这是安装页面选项卡的标准链接 "https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&next=YOUR_URL" 因为我不知道用户将在哪个页面上安装该选项卡,所以我无法正确设置下一个url。 这将导致我重定向到某个页面,我试图获取这些信息

我想将用户重定向到他当前安装在他拥有的facebook页面上的页面选项卡。 为了说明这一点,我正在谈论facebook页面标签的安装过程。 我在同一个方向上发现了几个问题,但我找不到正确的方法。 这是安装页面选项卡的标准链接

"https://www.facebook.com/dialog/pagetab?app_id=YOUR_APP_ID&next=YOUR_URL"

因为我不知道用户将在哪个页面上安装该选项卡,所以我无法正确设置下一个url。 这将导致我重定向到某个页面,我试图获取这些信息。但是,我无法通过签名请求或url模式提取有关他使用的页面的信息。 有时url包含安装该选项卡的页面的id,但这似乎已经结束

"https://url/?tabs_added%5B379396442071062%5D=1#="

编辑:此url包含数组编码的ID,谢谢@ifaour:%5B379396442071062%5D->379396442071062

在我看来,这是一个为页面标签所做的标准用例,我无法相信要真正做到这一点或找到解决方案是如此困难


希望你能帮忙

我想当前的逻辑没有问题。由于您可以使用一次将应用程序添加到多个页面中,Facebook让您可以控制下一步

Facebook将由管理员从对话框中返回所选页面的id,由于结果可能不止一个id,因此不建议将管理员重定向到Facebook页面选项卡,即使可以使用以下内容:

https://www.facebook.com/pages/-/PAGE_ID?sk=app_APP_ID
现在要考虑的一个好的做法是列出应用程序被成功添加的页面(并且可以提供一些“演示”或“下一步”来更好地为您的解决方案做广告)。p> 下面是处理响应的快速代码:

<?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/>?";
}

我想当前的逻辑没有问题。由于您可以使用一次将应用程序添加到多个页面中,Facebook让您可以控制下一步

Facebook将由管理员从对话框中返回所选页面的id,由于结果可能不止一个id,因此不建议将管理员重定向到Facebook页面选项卡,即使可以使用以下内容:

https://www.facebook.com/pages/-/PAGE_ID?sk=app_APP_ID
现在要考虑的一个好的做法是列出应用程序被成功添加的页面(并且可以提供一些“演示”或“下一步”来更好地为您的解决方案做广告)。p> 下面是处理响应的快速代码:

<?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/>?";
}

是的,我认为这在目前是不可能的。正如Donn Lee所说,这可能是不可能的。然而,当我尝试做一些类似的事情,但没有深入探讨时,我可能已经创建了一个变通方法。它基本上是将下一个页面url设置为头重定向脚本,该脚本将用户返回到页面选项卡。如果我找到了,我会把它贴出来。是的,我认为这在目前是不可能的。正如Donn Lee所说,这可能是不可能的。然而,当我尝试做一些类似的事情,但没有深入探讨时,我可能已经创建了一个变通方法。它基本上是将下一个页面url设置为头重定向脚本,该脚本将用户返回到页面选项卡。如果我找到了,我会把它寄出去。