我有一个应用程序,截至昨天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;
}
}
答案 0 :(得分:0)
验证FACEBOOK_APP_ID和FACEBOOK_SECRET值是否正确,并且您访问该站点的URL在应用程序设置页面上设置为站点URL和站点域。
否则验证PHP SDK版本是否相同且PHP版本是否相同。这可能有助于缩小问题范围。
答案 1 :(得分:0)
两种可能的想法:
您在该系统上使用的Curl库无法正常工作。尝试使用分散在FB网站周围的一些示例从shell进行调用。
我曾经将一个应用程序移动到另一台服务器并且无法解释FB API调用无法正常工作 - 在rsync之后的完全相同代码 - 尽管将新服务器IP更新为在我们的白名单中。我猜测Facebook开发者应用程序白名单更新功能被破坏或者IP被永久禁止所有Facebook的API。如果所有其他方法都失败了,请尝试移动到其他可用区域中的其他EC2实例,以查看它是否在那里工作。
P.S。当时,我通过电子邮件向Facebook发送电子邮件“如果您有任何问题请联系我”开发人员代表检查IP更新是否可能被破坏,但当然我没有得到有用团队的响应。