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

时间:2011-08-25 16:28:13

标签: facebook login

我有一个应用程序,截至昨天Facebook登录工作正常。我转而使用AWS EC2来获得更大的服务器,用于今天的容量规划。

不幸的是,Facebook登录不再有效。特别是,在从JavaScript授权获取access_token之后,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;
    }

}

2 个答案:

答案 0 :(得分:0)

验证FACEBOOK_APP_ID和FACEBOOK_SECRET值是否正确,并且您访问该站点的URL在应用程序设置页面上设置为站点URL和站点域。

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

答案 1 :(得分:0)

两种可能的想法:

  1. 您在该系统上使用的Curl库无法正常工作。尝试使用分散在FB网站周围的一些示例从shell进行调用。

  2. 我曾经将一个应用程序移动到另一台服务器并且无法解释FB API调用无法正常工作 - 在rsync之后的完全相同代码 - 尽管将新服务器IP更新为在我们的白名单中。我猜测Facebook开发者应用程序白名单更新功能被破坏或者IP被永久禁止所有Facebook的API。如果所有其他方法都失败了,请尝试移动到其他可用区域中的其他EC2实例,以查看它是否在那里工作。

  3. P.S。当时,我通过电子邮件向Facebook发送电子邮件“如果您有任何问题请联系我”开发人员代表检查IP更新是否可能被破坏,但当然我没有得到有用团队的响应。