Intereting Posts
Сериализация / Deserialize / OOP Laravel – порядок промежуточного ПО (приоритет промежуточного ПО). Мульти-арендатор с использованием Postgres Возвращает форму PHP. Примечание. Преобразование массива в строку. Завершение работы с php – предоставление разрешения apache php, mysql – Слишком много соединений с ошибкой базы данных Как заполнить пустое значение, если в этот день нет записи с использованием группы MySQL Лучший класс изображений изображений PHP если пустое значение $ _POST присваивает значение в цикле foreach .htaccess запретить файлы в подпапках Надежно предоставить уникальный секретный код победителю флеш-игры? Yii – Управление переменной sesssion Как отключить сообщения валидации на стороне клиента активной формы в Yii 2? Как получить адресное местоположение из широты и долготы в Google Map.? Параметр Magento group в поле даты Как поделиться содержимым моего веб-сайта на facebook

Проверка подлинности Facebook

Я немного разозлился на платформе 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; } 

Это было составлено на примерах в официальном PHP PHP SDK и документации разработчика, но при первой загрузке приложение просто оборачивается в неприятном круге перенаправления, и я понятия не имею, с чего начать отладку, о которой мне нечего не упоминать facebook.

Кто-нибудь получил рабочий образец аутентификации приложения iFrame Facebook или может увидеть что-то по своей сути неправильно с фрагментом кода, который у меня выше?

Заранее спасибо.

EDIT: Забыл упомянуть, что он переходит в цикл перенаправления с указанным выше кодом, но если я удалю массив параметров из вызова $facebook->getLoginUrl() он в конечном итоге выйдет из цикла и из самого Facebook, вместо этого мой URL холста вне контейнера iFrame Facebook. Например, URL-адрес становится http://www.woohoobingo.com/facebookv2/?session={...} вместо http://apps.facebook.com/woohoobingo/ .

Эта линия работает для меня

 header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"'); 

Но, как вы сказали, он не работает в сафари, потому что он не исправляет его для хранения файлов cookie, тогда вы можете использовать альтернативу. Отключение файлов cookie.

 $facebook = new Facebook(array( 'appId' => APP_ID, 'secret' => SECRET, 'cookie' => false )); 

и попытайтесь использовать токен доступа после аутентификации. @access_token – это oauth access_token, который передается на вашу страницу холста в исходном запросе POST.

 $facebook->api('/me?access_token='.$access_token); 

Надеюсь, что это работает

Взломали его. Использовал следующий HTTP-заголовок в верхней части моего файла index.php :

 header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');