У меня тут такая же проблема.Вот простой код, он запускается на одном сайте и настолько прост, насколько может быть:
@ini_set('log_errors','On'); // enable or disable php error logging (use 'On' or 'Off')
@ini_set('display_errors','On'); // enable or disable public display of errors (use 'On' or 'Off')
include_once('lib/facebook.php');
// Create our application instance
$config = array(
'appId' => 'xx',
'secret' => 'yyy'
);
$link = 'http://someurl.com';
$facebook = new Facebook($config);
// Get User ID
$user = $facebook->getUser();
if($user){ ?>
<p>logged in</p>
<?php } else {
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'manage_pages,email',
'redirect_uri' => $link,
));
echo '<a href="'.$loginUrl.'">Login with FB</a>';
}
Так, что делает идентификатор, он показывает ссылку для входа в систему, когда пользователь не вошел в систему (или будетконкретный - если getUser () ничего не получает), и параграф с текстом, если getUser дает то, что он должен дать.
Простой тест покажет проблему.При доступе к нему по URL-адресу сайта, даже когда пользователь получает разрешение, вместо абзаца отображается URL-адрес входа.
В чем проблема?Пытаясь выяснить это, я добавил URL-адрес сайта как «Приложение на Facebook», чтобы к нему можно было получить доступ изнутри Facebook.И eureka, если к нему обращаются таким образом (по URL-адресу Canvas Page), getUser () работает правильно.Более того, когда вы заходите по URL-ссылке на страницу холста, то при прямом посещении сайта getUser () также работает правильно.
Так в чем же подвох?Пытаясь с помощью функции инкогнито браузера, я понял, что в браузере пользователя что-то есть.Посещение сайта непосредственно из браузера, где пользователь уже был на URL-адресе страницы холста, показывает правильный ответ, тогда как в браузере, где пользователь не посетил URL-адрес страницы холста, отображается URL-адрес входа.
Итак, проблема в том, что проблема каким-то образом связана с кешем браузера, и Facebook не устанавливает правильный путь при посещении всей страницы вместо самой страницы холста.
У кого-нибудь есть идеи, как исправитьэта проблема работает только с php sdk?
Редактировать Кроме того, когда предоставляется доступ к приложению, когда пользователь нажимает на ссылку для входа, редирект возвращается на исходную страницу с состоянием и кодом в качестве параметров _GET.