(FBMLとFBJSはFacebookによって推奨されていないため、私のサーバーにデータを渡すためのアプローチは使用できません)。Facebookのアプリケーションから私のサーバーにデータを渡す方法(Ajax経由)
私はIFRAMEのfacebookアプリケーションを持っています。これは主にページで使用するように作られています。
ページ管理者が自分のページの自分のアプリケーションタブにアクセスすると、そのページに関する情報を追加する設定ページが表示されます。私は送信ボタンも持っています。ページ管理者が自分のページに関する情報を送信すると、そのページが自分のサーバーに送信され、ページIDとともに保存されます。この設定が完了すると、他のユーザーがページのこのアプリケーションタブにアクセスすると、ページ管理者が投稿した情報が表示されます。
私はFacebookのPHP SDKをサーバ側で使用しており、署名付きリクエストをデコードしてページIDを取得しています。
次はに自分のアプリケーションのindex.phpの中にコードの私のサーバーに(ユーザー入力とともに、ページのIDもここに示されていない、渡されます)
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](http://en.wikipedia.org/wiki/Cross-site_request_forgery)トークンを送る必要があります。また、php-sdkを使用している場合は、セッション内のサーバー上に 'signed_request'があるはずです。 – ifaour