如何正确授权Facebook应用程序

时间:2012-08-30 10:36:48

标签: facebook-apps facebook-authentication facebook-app-requests

我正在创建一个基本的Facebook应用,当用户未经许可访问该应用时,他们会被重定向到授权页面。但是,页面不显示,我看到以下错误。

  

此内容无法在框架中显示

在新窗口中打开它然后显示我的应用程序的授权页面。单击“转到应用程序”然后将我带到应用程序,但在它自己的窗口中,远离Facebook。回到FB并重新编写App页面现在可以正常工作。

更奇怪的是,当我退出并转到我的应用页面时,我得到了一个Facebook 404页面(4oh4.php)。

我猜我在某种程度上做错了,所以任何人都可以看到我的脚本有什么明显的错误吗?感谢。

要了解发生了什么 - http://apps.facebook.com/dyne_drewett_news/

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

$fbconfig['appUrl'] = 'my-app-url';    // Create An instance of our Facebook Application.
$facebook = new Facebook(array(
    'appId'  => 'my-app-ID', // Entered correctly in actual script
    'secret' => 'me-app-secret', // Entered correctly in actual script
    'cookies' => 'true',
));

// Get the app User ID
$user = $facebook->getUser();

if($user) :
    try{       // If the user has been authenticated then proceed
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e){
        error_log($e);     
        $user = null;
    }
endif;

// If the user is authenticated then generate the variable for the logout URL
if($user) :
    $logoutUrl = $facebook->getLogoutUrl();
?>

<!-- My HTML goes here -->

<?php
else :
    $loginUrl = $facebook->getLoginUrl();
    header('Location: '.$loginUrl);
endif;
?>

1 个答案:

答案 0 :(得分:1)

因为您使用的是iframe,所以您必须执行JavaScript重定向。只有这样,你才能重定向最顶层的框架 -

echo "<script language=javascript>";
echo "top.location.href ='".$url."';";
echo "</script>";
exit();

这是在Facebook应用程序中完成重定向的唯一方法。任何其他重定向(例如PHP)只会重定向用户 iframe ...