Facebook登录集成使用PHP SDK 4.0 - HTTP_REFERER重定向缺失


Facebook Login integration using PHP SDK 4.0 - HTTP_REFERER missing on redirect

我试图使用PHP SDK 4.0集成Facebook登录。一切都很顺利,只是在成功登录后Facebook重定向的页面中缺少HTTP_REFERER(用户授权应用程序并授予请求的权限)

登录页面:

<?php
...
$loginHelper = new FacebookRedirectLoginHelper('localhost/login/facebook/verify.php');
$loginURL = $loginHelper->getLoginUrl();
header("Location: $loginURL");
...
?>

verify.php page:

<?php
if (isset($_SERVER['HTTP_REFERER'])) {
    if (strpos($_SERVER['HTTP_REFERER'], 'facebook.com') !== false) {
        // Redirected from Facebook
       ...
    }
}
?>

php.net文档说明:

将用户代理引用到的页的地址(如果有)当前页面。这是由用户代理设置的。并非所有用户代理将设置这个,有些提供修改HTTP_REFERER的能力为一个功能。简而言之,它不能真正被信任。

那么,是Facebook没有设置这个特定的header还是我在哪里做错了?

这是你的web浏览器,应该设置HTTP_REFERER头不是Facebook本身。当您的站点从HTTPS站点被链接或重定向时,浏览器将不会设置一个referrer。