Я немного разозлился из-за постоянно меняющейся платформы Facebook, хрупкой структуры и отсутствия достойной и актуальной документации.
В настоящее время я переношу приложение из FBML теперь, когдаон устарел в приложении iFrame и имеет проблемы с аутентификацией.В настоящее время у меня есть глобальный скрипт начальной загрузки, который загружается при каждом просмотре страницы и содержит следующее, относящееся к аутентификации:
// attempt to authenticate against Facebook platform
require dirname(__FILE__) . '/facebook.php';
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => SECRET,
'cookie' => true
));
$session = $facebook->getSession();
$user = null;
if ($session) {
try {
$uid = $facebook->getUser();
$user = $facebook->api('/me');
}
catch (FacebookApiException $e) {
error_log($e);
}
}
if (!$user) {
$loginUrl = $facebook->getLoginUrl(array(
'req_perms' => 'email,user_likes',
'next' => CANVAS_URL.'/'
));
echo '<script>top.location.href="'.$loginUrl.'";</script>';
exit;
}
Это было собрано на основе примеров в официальном Facebook PHP SDK и документация для разработчиков, но при первой загрузке приложения происходит просто неприятный круг перенаправления, и я понятия не имею, с чего начать отладку, поскольку мне не на что ссылаться из Facebook.
Есть кто-нибудьрабочий пример аутентификации приложения Facebook iFrame, или вы можете увидеть что-то не так с фрагментом кода, который у меня есть выше?
Заранее спасибо.
РЕДАКТИРОВАТЬ: Забылиотметим, что он идет в цикле перенаправления с указанным выше кодом, но если я удаляю массив параметров из вызова $facebook->getLoginUrl()
, то он в конечном итоге выходит из цикла и выходит из самого Facebook, вместо этого переходя на URL моего холста вне контейнера iFrame Facebook,Например, URL становится http://www.woohoobingo.com/facebookv2/?session={...}
вместо http://apps.facebook.com/woohoobingo/
.