Php Facebook需要iFrame应用程序中的_login()

Php Facebook需要iFrame应用程序中的_login(),php,api,facebook,iframe,kohana,Php,Api,Facebook,Iframe,Kohana,我对iframe应用程序有严重的问题。我需要使用许多外部JS库和其他动态stuf,所以FMBL应用程序无法完成。当我调用require_login()时,当尚未安装应用程序时,我会看到应用程序安装对话框,这是正常的。但在授权之后,应用程序进入一个无休止的重定向循环,其中包含参数,如auth_token、installed等等。昨天我设法修好了,但今天又坏了。。。FB到底怎么了?找到一个解决方案让我发疯,在网上找到的解决方案似乎没有一个不起作用 到目前为止,我试过: (2010年3月7日!)

我对iframe应用程序有严重的问题。我需要使用许多外部JS库和其他动态stuf,所以FMBL应用程序无法完成。当我调用require_login()时,当尚未安装应用程序时,我会看到应用程序安装对话框,这是正常的。但在授权之后,应用程序进入一个无休止的重定向循环,其中包含参数,如auth_token、installed等等。昨天我设法修好了,但今天又坏了。。。FB到底怎么了?找到一个解决方案让我发疯,在网上找到的解决方案似乎没有一个不起作用

到目前为止,我试过:

(2010年3月7日!)

以上都不起作用。。。根据这些和一些FB文档:

我的示例测试文件如下所示:

<?php
//Link in library.
require_once '../application/vendor/Facebook/facebook.php';

//Authentication Keys
$appapikey = 'XXXX';
$appsecret = 'XXXX';

//Construct the class
$facebook = new Facebook($appapikey, $appsecret);

//Require login
$user_id = $facebook->require_login();

?>

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
  <title></title>
</head>
<body>
  <script src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php" type="text/javascript"></script>
  This is you: <fb:name uid="<?php echo  $user_id?>"></fb:name>
  <?php var_dump($facebook->$this->facebook->api_client->friends_get())?>
  <script type="text/javascript">
 FB_RequireFeatures(["XFBML"], function(){
  FB.Facebook.init("<?=$appapikey?>", "xd_receiver.html");
 });
  </script>
</body>
</html>

这是你:
跨域接收器页
我如何让它工作


我正在使用Kohana框架来实现这一点,并且已经在facebook php库中将标题(“位置”)替换为url::redirect()。您似乎在代码中使用了一些受限标记。你有没有试过把它们去掉


如果您想使用这些标记(
例如),请将其作为iframe应用程序而不是fbml…

您正在查看的许多教程都非常过时。Facebook API和伴随而来的SDK变化相当迅速,虽然这并不意味着不可能用“旧”的方式做事,但这些方式更有可能被破坏、弃用、删除,或者没有那么好的文档记录

要获得更好的支持,请尝试升级到最新的PHP SDK:

然后,您可以使用此示例作为您尝试执行的操作的基础:

它向用户显示一个登录链接,但如果您处于要强制登录的上下文中,只向登录的用户显示内容(模仿旧的
要求\u登录
),则可以替换:

// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}
与:


它是一个iframe应用程序。我尝试在iframe内部调用require_login,然后在Facebook外部重定向到我服务器上的应用程序,并以URI中带有auth_token变量的无休止循环结束。我也试着使用FBML应用程序,将iframe放在画布上,但流程是一样的。
// Login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl();
}
// Get logout URL, or redirect user to login URL
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  header('Location: ' . $facebook->getLoginUrl()) ;
}