0

ということで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>
4

1 に答える 1

2

<body>タグの直後に次のことを試してください。

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

現在のウィンドウが最上位のウィンドウであるかどうかを確認し、ページに直接アクセスしている場合は、iframe のページにリダイレクトします。

于 2012-11-11T10:01:27.503 に答える