У меня проблема с php Facebook sdk. Я прочитал много сообщений, рассказывающих о тех же проблемах (токен доступа недействителен, цикл переадресации и т. Д.), Но никто не мог помочь.Facebook OpenGraph с Yii Framework - Ошибка аутентификации
Вкратце, как разработан мой проект:
Это приложение Facebook, который предназначен для работы только с пользователем, зарегистрированным в Facebook. Используя Yii Framework, я создал фильтр, который вызывается каждый раз, когда страница загружается, чтобы убедиться, что контент виден только пользователем, зарегистрированным в Facebook. Он должен вести себя точно так же, как приложение BranchOut на Facebook.
Моя проблема, и как ее воспроизвести:
- прологиниться в моем приложении, используя типичный процесс входа в систему с Facebook (OAuth, маркер доступа)
- Я отключала вручную на странице Facebook, а затем попробуйте сделать новое действие в моем приложении
- Фильтр проверяет, зарегистрирован ли я на Facebook, а потому, что я не являюсь, он перенаправляет меня на страницу входа в систему Facebook.
- После того, как я снова вхожу в Facebook, я получаю типичный бесконечный цикл между Facebook и фильтром моего приложения.
Вот код моего фильтра:
$fb_logged = false;
try
{
$user = Yii::app()->facebook->getUser();
$me = Yii::app()->facebook->api('/me');
$fb_id = $me['id'];
$fb_logged = true;
}
catch (Exception $e)
{
$fb_logged = false;
}
if($fb_logged)
{
print_r($fb_id. ' has logged');
/* Check if user exists on MyApp
... */
}
// If user NOT logged on FB, send him to the FB login page
else
{
$loginUrl = Yii::app()->facebook->getLoginUrl(array(
'redirect_uri' => Yii::app()->getRequest()->getUrl() // I have tried many things here.
));
echo("<script> top.location.href='" . $loginUrl . "'</script>");
Yii::app()->end();
}
Что именно происходит, что после входа на FB, Фильтр вызывается снова, так как запрос на тот же URL сделан. И в этот момент вызов api ('/ me') генерирует исключение, потому что он не может найти действительный токен доступа и начинает цикл на нем.
Я могу добавить, что моя конфигурация хороша (или кажется), я проверил все мои URL-адреса, имя домена в соответствии с настройками приложения Facebook. Я также пробовал много вещей, таких как перенаправление на новый конкретный URL-адрес, но в любом случае мне нужно также использовать фильтр, потому что я хочу убедиться, что это все тот же пользователь (или действовать соответственно, если пользователь изменился).
Единственное, что работает, это перенаправить пользователя на страницу, у которой нет фильтра (никакого вызова api («/ me») не производится). И затем, щелкнув вручную новую ссылку в приложении, и там найден токен доступа. И это не то поведение, которое я хочу.
Я действительно надеюсь, что кто-то может мне помочь!
Заранее спасибо.
Вы нашли, что проблема до сих пор. Я испытываю ту же проблему. –