Я делаю простую вкладку страницы для facebook, но, похоже, проблема связана только с Safari на Mac. С Safari в Windows нет проблем. Страница выполнена в 3 типах - fangate (когда пользователю не понравилась страница), на главной странице (когда понравилось) и на третьей странице. Когда я вхожу на вкладку страницы, она показывает fangate. Затем я «люблю» страницу и показывает главную страницу, но когда я нажимаю ссылку на третью страницу, она показывает мне fangate. Я думаю, что это потеряла сессию signed_request. Есть ли способ передать signed_request на каждой странице без использования сеансов?signed_request исчезает на сафари?
ответ
Я не уверен, что вы используете PHP SDK. Если это так, этот код может работать на вас. Если подписанный запрос найден (как и на главной странице после того, как вам понравилась страница), сохраните его в сеансе. Для каждой страницы после вы проверяете версию сеанса подписанного запроса. Этот код должен отображаться на каждой странице (с включенным или любым другим).
<? php
//get signed request
$signedRequest = $facebook - > getSignedRequest();
//check if inital vars can be used or use session loaded vars
if (isset($signedRequest)) {
echo '<!-- INITIAL LOAD -->';
$_SESSION['signedRequest'] = $signedRequest;
} else {
echo '<!-- STORED SESSION -->';
$signedRequest = $_SESSION['signedRequest'];
}
//check like status
$liked = (!$signedRequest['page']['liked'] ? false : true);
//check if page is liked
if ($liked === false) {
//********************* NOT LIKED, SHOW LIKE GATE *********************
} else {
//********************* LIKED, SHOW PAGE CONTENT *********************
}
?>
Извините за поздний ответ. Да, я использую PHP SDK и тот же самый код, который вы там написали (проверьте для signedRequest, и если есть один -> сохранить его в сеансе, иначе -> получить его из сеанса). Но похоже, что Safari теряет параметры сеанса. Два пути я понял, как работают следующие:
Целевые все ссылки на _top и добавить к ним параметры, так что каждый раз, когда пользователь изменяет страницу, она перезагружает всю страницу (не только в IFRAME) и передает переменные через app_data.
Добавить signRequest для каждой ссылки, поэтому всякий раз, когда пользователь переключается на страницу, в URL-адресе есть подписьRequest. Этот метод фактически не обновляет всю страницу, поскольку он отправляет параметры на веб-сайт iframe, поэтому он немного лучше первого.
Оба метода требуют передачи данных по ссылкам, которые я не хочу делать, потому что мне нужно будет изменить каждую ссылку в моем приложении. Я еще не пытался хранить signedRequest в cookie.
Но если есть ЛЮБОЙ другой способ, который не требует значительного изменения ссылок или хранения данных в кукисах, я буду рад их услышать.
- 1. ИОСА вход сафари текст исчезает
- 2. facebook js signed_request
- 3. facebook signed_request user_id отсутствует
- 4. Facebook signed_request Недопустимый
- 5. parsing signed_request в facebook
- 6. Как отключить facebook signed_request на вкладке страницы?
- 7. Вверх nav исчезает в сафари, показывает в IE, Mozilla
- 8. FB signed_request issue ASP.net C#
- 9. Вкладка «Facebook» не публикуется signed_request
- 10. Массив страницы отсутствует из signed_request
- 11. Perl & Facebook json signed_request разбор
- 12. Захват Facebook signed_request с Sinatra
- 13. Django facebook app: missing signed_request
- 14. Создание UINavigationBar Исчезает и появляется на ощупь, имитируя сафари на iOS
- 15. Facebook signed_request куки неправильного код
- 16. аутентификация facebook с использованием signed_request
- 17. pageshow событие на сафари
- 18. Аякса несовместимого на сафари
- 19. Недействительная дата на сафари
- 20. Flexbox центрирования на сафари
- 21. Ошибка Javascript на Сафари
- 22. Zoomcharts API на сафари
- 23. Телефонная переадресация на сафари
- 24. Высота изображения на сафари
- 25. Div обрушивается на ipad на сафари
- 26. Проблема сеанса ASP.NET Facebook с сафари
- 27. misinterpreted png изображения в сафари на mac
- 28. bxslider исчезают в сафари
- 29. URL мобильного веб-сайта и signed_request
- 30. Facebook PHP приложение на Heroku не получает signed_request