Php FBML画布应用程序身份验证

Php FBML画布应用程序身份验证,php,facebook,fbml,facebook-graph-api,Php,Facebook,Fbml,Facebook Graph Api,我正在修改一个FBML画布应用程序,以使用新的PHPSDK和身份验证,而不是旧的RESTAPI 现在我正在尝试使用以下代码段: $me = null; // Session based API call. if ($session) { try { $uid = $facebook->getUser(); $me = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log

我正在修改一个FBML画布应用程序,以使用新的PHPSDK和身份验证,而不是旧的RESTAPI

现在我正在尝试使用以下代码段:

$me = null;
// Session based API call.
if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}
// login or logout url will be needed depending on current user state.
if ($me) {
} else {
    $loginUrl = $facebook->getLoginUrl(array('req_perms' => 'user_birthday, publish_stream, email'));
    header('Location: '.$loginUrl);
}
但是,如果对任何非相对URL使用php header函数,则会出现以下错误:

Application Temporarily Unavailable
The URL [https://www.facebook.com/login.php?.........] is not valid.

Sorry, the application you were using is experiencing a problem. Please try again later.

如果需要使用最新的PHP SDK对FBML canvas应用程序进行身份验证,如何正确重定向到请求扩展权限的应用程序登录页?

看起来您无法使用服务器端重定向(header())将用户推送到身份验证页。我现在正在使用这个:

function redirect($url)
{
    echo '<script>top.location="' . $url . '";</script>';
    //echo '<fb:redirect url="' . $url . '"></fb:redirect>';
    //header("location:$url");
    exit();
}
函数重定向($url)
{
echo'top.location=“”.$url.“;”;
//回声';
//标题(“位置:$url”);
退出();
}