(Поскольку Facebook не поддерживает FBML и FBJS, я не могу использовать эти подходы для передачи данных на свой сервер).
У меня есть приложение IFRAME facebook, в основном созданное для использования страницами.
Когда администратор страницы посещает вкладку моего приложения на своей странице, он видит страницу настроек, на которой он может добавить информацию о своей странице. У меня тоже есть кнопка отправки. Как только администратор страницы отправит информацию о своей странице, она будет отправлена на мой сервер и сохранена вместе с идентификатором страницы. После завершения этой настройки, когда другие пользователи посетят эту вкладку приложения на странице, они увидят информацию, опубликованную администратором страницы.
Я использую Facebook PHP SDK на стороне сервера для декодирования подписанного запроса и получения идентификатора страницы.
Ниже приведен код в файле index.php моего приложения для отправки данных на мой сервер (наряду с пользовательским вводом также будет передан идентификатор страницы, который здесь не показан)
function sendData() {
$.post('ajax.php', {
data : $("#userdata").val()
}, function(data) {
alert(data);
});
}
</script>
Ниже приведен простой скрипт ajax.php. Пока это только тестовый скрипт.
<?php
echo "<pre>" . print_r($_POST) . "</pre>";
?>
Проблема в том, что на сервер отправляются только пользовательские данные. В этом подходе есть проблема с безопасностью. Я хочу отправить 'signed_request' (который facebook изначально отправляет на мой index.php, с помощью которого я проверяю запрос) вместе с данными пользователя, чтобы я мог проверить запрос со стороны сервера и обновить информация для правой страницы. В противном случае любой может опубликовать подобный запрос и обновить информацию для любой страницы.
signed_request
для проверки ввода формы, вам нужно отправить CSRF токен. И просто примечание:signed_request
в любом случае должен быть на сервере в сеансах, если вы используете php-sdk. - person ifaour   schedule 07.08.2011