Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
身份验证后重定向到Facebook页面选项卡_Facebook_Facebook Php Sdk_Facebook Apps_Facebook Page_Facebook Canvas - Fatal编程技术网

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

身份验证后重定向到Facebook页面选项卡,facebook,facebook-php-sdk,facebook-apps,facebook-page,facebook-canvas,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_ur

我有一个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>");
     } 
?>

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

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

echo "<script language=javascript>";
echo "top.location.href ='".$page_url."';";
echo "</script>";
exit();
echo”“;
echo“top.location.href=”$page_url.“;”;
回声“;
退出();
这很难看,许多人拒绝相信这是正确的方法,但我还没有找到替代方法