Facebook getUser()现在只返回0;昨天他在工作吗?

Facebook getUser()现在只返回0;昨天他在工作吗?,facebook,login,Facebook,Login,我有一个应用程序,从昨天开始,Facebook的登录功能一直很好。我切换到AWS EC2以获得更大的服务器,用于今天的一些容量规划 不幸的是,Facebook登录不再有效。特别是,从JavaScript授权获取access_令牌后,getUser()调用仅返回0。代码如下 由于服务器是唯一已更改(和IP)的对象,因此是否存在与我的服务器相关的一些配置我不知道/不知道 if(isset($_GET["access_token"])) { $access_token = $_GET["acc

我有一个应用程序,从昨天开始,Facebook的登录功能一直很好。我切换到AWS EC2以获得更大的服务器,用于今天的一些容量规划

不幸的是,Facebook登录不再有效。特别是,从JavaScript授权获取access_令牌后,getUser()调用仅返回0。代码如下

由于服务器是唯一已更改(和IP)的对象,因此是否存在与我的服务器相关的一些配置我不知道/不知道

if(isset($_GET["access_token"])) {
    $access_token = $_GET["access_token"];
    $facebook = new Facebook(array(
        'appId' => FACEBOOK_APP_ID,
        'secret' => FACEBOOK_SECRET,
    ));
    $facebook->setAccessToken($access_token);
    $user = $facebook->getUser();
    if($user) {
        try {
            $user_profile = $facebook->api('/me');

            $user_name = $user_profile["name"];
            $user_email = $user_profile["email"];
            $fb_uid = $user_profile["id"];
            $fb_access_token = $access_token;

        } catch (FacebookApiException $e) {
            $status_header = 'HTTP/1.1 500 Internal Server Error';
            header($status_header);  
            header('Content-type: application/json');

            echo json_encode(array('message' => 'Facebook Exception'));
            exit;
        }
    } else {
        $status_header = 'HTTP/1.1 500 Internal Server Error';
        header($status_header);  
        header('Content-type: application/json');

        echo json_encode(array('message' => 'Facebook user does not exist', 'access_token' => $access_token, 'user' => $user, 'fb' => $facebook));
        exit;
    }

}

验证FACEBOOK_APP_ID和FACEBOOK_SECRET值是否正确,以及您从中访问站点的url是否设置为应用程序设置页面上的站点url和站点域

否则,请验证PHP SDK版本是否相同以及PHP版本是否相同。这可能有助于缩小问题的范围。

两种可能的想法:

  • 您在该系统上使用的Curl库工作不正常。试着用一些散落在FB网站上的例子从shell调用

  • 有一次,我将一个应用程序移动到另一台服务器上,尽管将新的服务器IP更新到了我们的白名单中,但FB API调用在rsync之后在完全相同的代码上莫名其妙地不起作用。我猜测要么是Facebook开发者应用程序白名单更新功能被破坏,要么是IP被永久禁止进入Facebook的所有API。如果所有这些都失败了,请尝试移动到不同可用性区域中的不同EC2实例,看看它是否在那里工作


  • p、 当时,我给Facebook的开发者代表发了一封电子邮件“如果你有任何问题,请与我联系”,以检查IP更新是否可能被破坏,但我当然没有得到那边帮助团队的回复。

    试试另一个网络浏览器。可能是缓存或cookie问题?尝试了三种不同的浏览器是否也使用相同的域名?facebook应用程序仅限于您在设置中提供的域。是的,它是同一个域。昨晚我将DNS条目指向了新服务器。我知道这是一个老问题,但500响应太刺眼了,无法绕过。这不是一个错误。它应该是401或200,并带有一条很好的错误消息。我这样做了(并进行了三次检查),一切都是准确的。。我现在已经通过CSS隐藏了FB登录按钮,这样用户就不会试图注册并获得错误。仅供参考,如果您可以访问Javascript控制台并对此感到满意,您可以通过运行以下命令来启用FB登录按钮:
    $(“p.hidden”).removeClass('hidden')是的,我能够很好地登录,并且看到/register.php抛出了一个500错误。您使用的是什么版本的PHP SDK?两台服务器上都是相同的?两台服务器上都是facebook-php-3.0。我刚刚意识到,我在EC2上创建的新服务器运行的是PHP5.3.6,而我的旧服务器运行的是5.2.17。FBSDK在这两者之间有什么已知的问题吗?谢谢,这让我在Curl库中更深入地挖掘。原来是CA证书的路径!现在,我修改了base_facebook.php,以便在makeRequest()函数中捕获Curl错误代码77。