身份验证后重定向到Facebook页面选项卡

时间:2012-08-15 17:03:27

标签: facebook facebook-php-sdk facebook-apps facebook-page facebook-canvas

我有一个Facebook页面,其中添加了我的应用程序选项卡。我使用以下代码检查用户是否经过身份验证: -

<?php
     $app_id = "MY APP ID";

     $canvas_page = "MY CANVAS PAGE";

     $auth_url = "https://www.facebook.com/dialog/oauth?client_id=" 
            . $app_id . "&redirect_uri=" . urlencode($canvas_page);

     $signed_request = $_REQUEST["signed_request"];

     list($encoded_sig, $payload) = explode('.', $signed_request, 2); 

     $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

     if (empty($data["user_id"])) {
            echo("<script> top.location.href='" . $auth_url . "'</script>");
     } else {
            echo("<script> location.href='index.php'</script>");
     } 
?>

现在,CANVAS PAGE必须与CANVAS PAGE相同,我在应用程序中进行了更改,登录页面重定向到https://apps.facebook.com/myappname/后,我希望它重定向到我的 Facebook页面标签;对于这一个 - https://www.facebook.com/myfbpage/app_82136128736123

1 个答案:

答案 0 :(得分:2)

你是对的。 redirect_uri必须是应用程序“拥有”的URL。这意味着它列在应用程序设置中。

您的画布页面必须使用JavaScript重定向(就像您正在使用的那个)。唯一的区别是您需要记住您的应用程序在iframe中运行。您必须更改顶部的位置属性,而不是文档。 Top引用页面上最顶部的框架,这是应用程序执行正确重定向的唯一方法。

echo "<script language=javascript>";
echo "top.location.href ='".$page_url."';";
echo "</script>";
exit();

这很丑陋,许多人拒绝相信这是正确的做法,但我还没有找到替代方案。