(FBML 및 FBJS는 Facebook에서 사용되지 않으므로 이러한 접근 방식을 사용하여 내 서버에 데이터를 전달할 수 없습니다.)Ajax를 통해 Facebook 응용 프로그램에서 내 서버로 데이터를 전달하는 방법은 무엇입니까?
저는 IFRAME Facebook 응용 프로그램을 가지고 있으며 주로 페이지에서 사용하도록 제작되었습니다.
페이지 관리자가 페이지에서 내 애플리케이션 탭을 방문하면 페이지에 대한 정보를 추가하는 설정 페이지가 표시됩니다. 제출 버튼도 있습니다. 페이지 관리자가 자신의 페이지에 대한 정보를 제출하면 내 서버로 보내지고 페이지 ID와 함께 저장됩니다. 이 설정이 완료되면 다른 사용자가 페이지의이 애플리케이션 탭을 방문하면 페이지 관리자가 게시 한 정보가 표시됩니다.
페이스 북의 PHP SDK을 서버 측에서 사용하여 서명 된 요청을 디코딩하고 페이지 ID를 얻습니다.
다음 (페이지 ID는, 전달 여기에 표시되지 않습니다 사용자 입력과 함께) 내 응용 프로그램의 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' (페이스 북은 처음에 요청을 확인하는 데 사용하는 index.php로 전송 함) 사용자 데이터와 함께 보내야하므로 서버 측의 요청을 확인하고 오른쪽에 대한 정보를 업데이트 할 수 있습니다. 페이지. 그렇지 않으면 누구나 이와 같은 요청을 게시하고 페이지의 정보를 업데이트 할 수 있습니다.
양식 입력의 유효성을 검사하기 위해 'signed_request'를 보낼 필요가없는 경우 [CSRF] (http://en.wikipedia.org/wiki/Cross-site_request_forgery) 토큰을 보내야합니다. php-sdk를 사용하고 있다면 세션에서 서버에 'signed_request'가 있어야합니다. – ifaour