Facebook应用程序没有显示任何内容(PHP错误)

时间:2011-10-09 12:57:28

标签: php facebook

我相信这是一个PHP错误,但我不是百分百肯定。基本上,我正在尝试为我的网络杂志构建一个应用程序,并已经完成了静态内容,这很好。然后我转换为PHP并尝试包含PHP Facebook SDK。我使用了正确的App ID和Secret。

这是我在index.php文件开头使用的代码。

<?php
    require 'fb/facebook.php';

    $fbconfig['appUrl'] = "http://apps.facebook.com/dailydischord/";

    // create instance of the Facebook application
    $facebook = new Facebook(array(
        'appId' => '<appid>',
        'secret' => '<appsecret>',
        'cookies' => 'true',
    ));

    // get the id of the user using the app
    $user = $facebook->getUser();

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

    // if user is authentic, generate logout URL
    if($user) {
        $logoutUrl = $facebook->getLogoutUrl();
?>
<!DOCTYPE HTML>
<html>....

然后我在内容完成后继续这样做。

<?php
    } else {
        $loginUrl = $facebook->getLoginUrl();
    }
?>

我确实得到了一个错误,我不再得到,这很奇怪。就是这样的。

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started...

该应用的网址位于:http://apps.facebook.com/dailydischord/

非常感谢任何帮助。如果我错过了什么,请问我,我会尝试提供更多见解。

4 个答案:

答案 0 :(得分:1)

您正在尝试发送(会话)标题,而它们已经发送。

可能在<?php之前有换行符。如果没有,请尝试将session_start()放在代码的开头(<?php之后的第一行)。如果这也不起作用,请将ob_start()放在代码的开头(它很脏,但它会起作用)。

答案 1 :(得分:1)

您正在尝试输出标头,在本例中为会话。标题是浏览器处理的第一件事。如果要在输出HTML后更改此设置,则会出现此错误。

在输出数据后,最好不要更改标题,也可以使用以下行并将其放在代码的顶部:

ob_start();

请注意,使用它不是一个正确的修复,但它会打开输出缓冲(允许您在已经放置HTML代码时更改标头)。

以下是可选的但是正确,使用ob_start()函数并且完全在输出的末尾你必须关闭缓冲并输出缓冲区中的内容。

ob_end_flush();

有关详细信息,我会告诉您转到PHP documentation页面。

答案 2 :(得分:0)

由于输出完全空白,因此表示语法错误或失败require。您是否可以访问Web服务器错误日志?它可能会告诉你确切的问题。要快速检查,您可以将require更改为include,看看您是否获得任何输出(即使它只是屏幕上的错误消息)。

答案 3 :(得分:0)

我设法自己修复了这个问题。似乎最后一点代码是问题(“else”语句)。这是我使用的代码。

<?php
    } else {
        $loginUrl = $facebook->getLoginUrl(array('redirect_uri' => $fbconfig['appUrl']));
        print "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
    }
?>