У меня была похожая проблема с вами, и я начал использовать что-то похожее на следующее:
function get_facebook_cookie($app_id, $app_secret) {
$args = array();
parse_str(trim($_COOKIE['fbs_' . $app_id], '\\"'), $args);
ksort($args);
$payload = '';
foreach ($args as $key => $value) {
if ($key != 'sig') {
$payload .= $key . '=' . $value;
}
}
if (md5($payload . $app_secret) != $args['sig']) {
return null;
}
return $args;
}
$cookie = get_facebook_cookie(APP_ID, APP_SECRET);
$me = json_decode(file_get_contents('https://graph.facebook.com/me?access_token='.$cookie['access_token']));
if ($me) {
echo "Hi ".$me->name;
} else { ?>
<a href="https://www.facebook.com/dialog/oauth?client_id=<?= APP_ID;?>&redirect_uri=<?= REDIRECT_URI ;?>"><img src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif"><!--Login with Facebook--></a>
Я также включаю следующие JS
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: '<? echo APP_ID ?>', status: true,
cookie: true, xfbml: true});
FB.Event.subscribe('auth.login', function(response) {
window.location.reload();
});
</script>
Я использовал PHP SDK, такой как вы, но я перестал делать то, что он не работает.Я заметил, что это все еще вызывает несколько ошибок в журналах ошибок, относящихся к cookie-файлам, поэтому кажется, что он в первую очередь полагается на JS, чтобы инициализировать cookie-файл.Версия 3 SDK доступна сейчас, так что, возможно, это поможет.Единственная разница между этим заключается в том, что я должен вручную вызывать file_get_contents для объекта графа, который я хочу, но достаточно просто написать функцию или класс, чтобы сделать это для вас