вам, вероятно, нужна точка с запятой, чтобы получить код для выполнения.Также необходим знак равенства.(Спасибо Дэвид Баркер )
$app_id = APP_ID;
$canvas_page = APP_LINK;
$auth_url = "http://www.facebook.com/dialog/oauth?client_id=". $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,read_stream";
echo "<script> top.location.href='" . $auth_url . "';</script>";
Что вы получите, когда сделаете это: echo "<script> alert('".$auth_url."');</script>";
?
Кроме того, более простой способ сделать это в PHPнапример:
$app_id = APP_ID;
$canvas_page = APP_LINK;
$auth_url = "http://www.facebook.com/dialog/oauth?client_id". $app_id . "&redirect_uri=" . urlencode($canvas_page) . "&scope=email,read_stream";
echo <<<EOT
<script>
top.location.href="$auth_url";
//checking the value of auth_url to see if that is the reason redirect is not happening.
if (window.console) {
console.log("$auth_url");
} else {
alert("$auth_url");
}
</script>
EOT;
Используя синтаксис heredoc, вам не нужно ничего экранировать, вы можете использовать одинарные и двойные кавычки внутри, а переменные по своей сути заменяются в вашей строке.;)