Facebook应用程序:不会在iFrame中重定向到OAuth

时间:2012-11-12 18:03:37

标签: facebook iframe canvas oauth

我目前正在使用php sdk和js sdk开发一个facebook应用程序。 (我需要他们两个)

当用户尚未授权应用程序并加载画布页面(https://apps.facebook.com/app_name/)时,没有任何反应,他只会获得一个空白页面,其中有一个Facebook栏位于顶部。 但是,如果他加载应用程序的直接URL(https://my_app.mydomain.com),它可以正常工作,并重定向到OAuth对话框。如果他授权该应用程序,则会将其重定向到https://apps.facebook.com/app_name/并正确加载iframe。

如果用户已经授权了应用程序,则两个链接都在运行(https://apps.facebook.com/app_name/和https://my_app.mydomain.com)。

这是我的身份验证码:

<?php

require 'php-sdk/facebook.php';

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

$user = $facebook->getUser();



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

if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {

    $params = array(
      'scope' => 'publish_stream',
      'redirect_uri' => 'https://apps.facebook.com/quiet_quies/'
    );

  $loginUrl = $facebook->getLoginUrl($params);
  header('Location: ' . $loginUrl);
}

有人对此有所了解吗?这真让我疯了...... 谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

是的,@ CBroe是对的,在您的php代码中尝试用

替换header('Location: ' . $loginUrl);
echo "<script language=javascript>top.location.href ='".$loginUrl."'</script>";

它应该适用。