1

我目前正在使用 PHP 开发一个应用程序,基本上它已经完成,并且在测试它时没有出现任何问题(Chrome),直到在 IE(7、8 和 9)上测试

该应用程序可以进行身份​​验证,但是每当我尝试与该应用程序交互时,它都会显示错误

API 错误代码:191 API 错误描述:指定的 URL 不归应用程序所有 错误消息:无效的 redirect_uri:Esta URL no está permitida por la configuración de la aplicación。

现在,我检查了 fb 中的应用程序设置,与 PHP 中的重定向一致,根本看不到任何问题:

(在Facebook)

URL del sitio https://secure3.realssl.com/pepitolapelicula/concurso/ Página de trabajo https://apps.facebook.com/concursospepito/ URL del lienzo https://secure3.realssl.com/pepitolapelicula/concurso/ Secure画布 URL https://secure3.realssl.com/pepitolapelicula/concurso/ Lienzo FBML/iframe iframe 沙盒模式 Activado 取消授权 URL https://secure3.realssl.com/pepitolapelicula/concurso/

(在 PHP 中要进行身份验证的部分)

$fbconfig['appid' ] = "000";
$fbconfig['secret'] = "000";

$fbconfig['baseUrl']    =   "https://secure3.realssl.com/pepitolapelicula/concurso/";
$fbconfig['appBaseUrl'] =   "http://apps.facebook.com/concursospepito/";


if (isset($_GET['code'])){
    header("Location: " . $fbconfig['appBaseUrl']);
    exit;
}

if (isset($_GET['request_ids'])){

}

$user  =   null; 
try{
    include_once "facebook.php";
}
catch(Exception $o){
    echo '<pre>';
    print_r($o);
    echo '</pre>';
}

$facebook = new Facebook(array(
  'appId'  => $fbconfig['appid'],
  'secret' => $fbconfig['secret'],
  'cookie' => true,
));


$user       = $facebook->getUser();
$loginUrl = $facebook->getLoginUrl(array('scope'=>'publish_stream'));

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    d($e);  // d is a debug function defined at the end of this file
    $user = null;
  }
}

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

//get user basic description
$userInfo           = $facebook->api("/$user");

我认为这可能与主机提供商(secure3.realssl)有关,但老实说,我现在不知道。因此,请提前感谢您提供的任何帮助

4

1 回答 1

0

嗯,这真的很奇怪,但是...

我已经设法使用这个问题中提供的示例(由 SIR) 验证 facebook 画布应用程序返回 ?code=

基本上,我注意到的是我使用的代码得到了

if (isset($_GET['code'])){
    header("Location: " . $fbconfig['appBaseUrl']);
    exit;
}
$user       = $facebook->getUser();

虽然 SIR 答案中的示例首先获取的是 $user,然后检查“代码”

不过,奇怪的是,只有在 IE 上才注意到行为

谢谢

于 2012-05-18T19:49:23.550 回答