Php 登录Facebook应用程序将重定向到画布URL

Php 登录Facebook应用程序将重定向到画布URL,php,facebook,facebook-apps,Php,Facebook,Facebook Apps,所以我开始学习facebook应用程序,遇到了第一个障碍。每当我登录到我的简单hello用户应用程序时,我都会被重定向到画布URL(应用程序内容直接在服务器上打开,而不是在facebook iFrame中) 这是密码 <?php require_once("php-sdk/facebook.php"); $config = array( 'appId' => '', 'secret' => '' ); $facebook = new Facebook($co

所以我开始学习facebook应用程序,遇到了第一个障碍。每当我登录到我的简单hello用户应用程序时,我都会被重定向到画布URL(应用程序内容直接在服务器上打开,而不是在facebook iFrame中)

这是密码

<?php
require_once("php-sdk/facebook.php");

$config = array(
    'appId' => '',
    'secret' => ''
);

$facebook = new Facebook($config);

$user_id = $facebook->getUser();
$params = array(
    'scope' => 'read_stream, friends_likes',
    'redirect_uri' => 'https://apps.facebook.com/401822713222945/'
);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    </head>

    <body>
<?php
if ($user_id){
    try {
        $user_profile = $facebook->api('/me','GET');
        echo 'Welcome ' . $user_profile['name'] . '!';
    } catch(FacebookApiException $e) {
        $login_url = $facebook->getLoginUrl();
        echo 'Please <a href="' . $login_url . '" onclick="top.location.href = \'' . $login_url . '\'">log in.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
    }
} else {
    $login_url = $facebook->getLoginUrl();
    echo 'Please <a href="' . $login_url . '" onclick="top.location.href = \'' . $login_url . '\'">log in.</a>';
}
?>
    </body>
</html>

请在
标记后尝试以下操作

<script type="text/javascript">
if(top === self){
    document.location = "<?php echo $params['redirect_uri'];?>";
}
</script>

如果(顶部===自身){
document.location=“”;
}

它将检查当前窗口是否是最顶部的窗口,如果您直接访问该页面,它会将您重定向到iframed页面。

您确定应用程序的设置正确吗?我编辑了你的应用程序ID和密码,如果我是你的,我会生成一个新的密码。谢谢编辑!好吧,我想是的,但我最好再检查两次。你没有“登录Facebook的网站”和“Facebook上的应用程序”?我已经将应用程序设置为Facebook上的应用程序了很多次-它确实有效,尽管我仍然关心为什么会发生这种情况,我和我的朋友同时在做应用程序,我们的代码几乎是一样的,但重定向仅在我的应用程序中被破坏。你好,Karl,我有相同的重定向问题,我在我的应用程序中使用了上述代码,问题得到了解决,但当新用户打开应用程序时,没有打开任何身份验证对话框:(.因为你为重定向提供了一个静态url..你能帮我吗???@Rajnish你调试过重定向uri了吗,它是什么样子的?是的,我调试过,但它是一个facebook应用程序url,像往常一样带有状态和令牌,如果这是重定向uri,那么这似乎与这个问题无关。如果你喜欢,请创建一个新问题,其中y你解释了所有的事情,当你这么做的时候,请随意告诉我。