0

我有一个 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

4

1 回答 1

2

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

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

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

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

于 2012-08-15T17:20:26.113 回答