php - Facebook 重定向到 canvas url 而不是 facebook 上的应用程序

标签 php facebook

我写了一个 facebook 应用程序,作为页面上的选项卡。

这是我的 config.php 文件,其中包含配置并在用户尚未批准该应用程序时重定向到身份验证页面:

<?php
require_once("database.php");
require_once("functions.php");
require_once("facebook.php");

$config = array
(
    'database' => array
    (
        'host' => 'localhost',
        'name' => '***',
        'username' => '***',
        'password' => '***'
    )
);

$db = new Database($config['database']['host'], $config['database']['name'], $config['database']['username'], $config['database']['password']);
$db->connect();

$facebook = new Facebook(array(
    'appId' => '***',
    'secret' => '***',
    'cookie' => true
));

$user = $facebook->getUser();

if ($user)
{
    try
    {
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}

if ($user)
    $logoutUrl = $facebook->getLogoutUrl();
else
{
    $loginUrl = $facebook->getLoginUrl(array(
        'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions'
    ));
}

if (!$user)
{
    echo "<script type=\"text/javascript\">top.location.href = '".$loginUrl."';</script>";
}
?>

这是我的主文件:

    <?php
    require_once("includes/config.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="he" lang="he" dir="rtl">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=windows-1255" />
        <title>
            שער 7 - הלב הצהוב | מכבי תל אביב
        </title>
    </head>
    <body>
        <?php
            $clLike = $facebook->api('/me/likes/204623816223540');
            if (!empty($clLike['data']))
                echo "I'm a fan!";
            else
                echo "I'm not a fan :(";
        ?>
    </body>
</html>

正如我之前提到的,此应用程序作为 Facebook 页面上的选项卡使用,而不是作为独立的 Facebook 应用程序使用,因此没有 Canvas URL。页面选项卡 url 是:http://www.gate7.co.il/fbapps/predictor/

当用户进入选项卡时,他会被重定向到身份验证页面(来自 config.php),但是当身份验证过程完成后,用户会被重定向到页面选项卡 url(http://www.gate7 .co.il/fbapps/predictor/) 而不是页面内的选项卡。

我试图将这些行添加到索引文件中:

        <script type="text/javascript">
        if (top.location.href != "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372")
            window.location = "http://www.facebook.com/gate7yellowheart?sk=app_196175180456372";
    </script>

它在 firefox 上运行良好,用户从页面选项卡 url 重定向到页面中的实际选项卡,但在 chrome 中它只会造成困惑并在选项卡内显示 facebook。

解决这个问题的方法是什么?

最佳答案

在您的 getLoginUrl() 调用中,将 redirect_uri 参数设置为您的标签页,如下所示:

$loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'email,user_about_me,user_likes,user_status,read_stream,offline_access,publish_stream,publish_actions',
    'redirect_uri' => 'http://www.facebook.com/gate7yellowheart?sk=app_196175180456372'
));

关于php - Facebook 重定向到 canvas url 而不是 facebook 上的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602526/

相关文章:

php - 使用 Twinfield Openid Oauth 连接时的 "Invalid_grant"响应

PHP、cURL 和 HTTP POST 示例?

django allauth facebook本地开发

python - 网址错误 : <urlopen error [Errno 104] Connection reset by peer>

javascript - Facebook 社交插件 - GDPR

android - 为什么这个由 facebook 生成的深层链接 (applink) 不起作用?

php - 必要时剥离价格小数点

php - Laravel 查询生成器获取自定义属性

php - JQuery 表单随机提交作品

javascript - 使用 Javascript 获取 Facebook 用户个人资料数据