我有一个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。
答案 0 :(得分:2)
你是对的。 redirect_uri必须是应用程序“拥有”的URL。这意味着它列在应用程序设置中。
您的画布页面必须使用JavaScript重定向(就像您正在使用的那个)。唯一的区别是您需要记住您的应用程序在iframe中运行。您必须更改顶部的位置属性,而不是文档。 Top引用页面上最顶部的框架,这是应用程序执行正确重定向的唯一方法。
echo "<script language=javascript>";
echo "top.location.href ='".$page_url."';";
echo "</script>";
exit();
这很丑陋,许多人拒绝相信这是正确的做法,但我还没有找到替代方案。