0
私のdjangoのウェブサイトでは、新しいfacebook javascript SDKを使用しています。新しいjavascript SDKを使用してFacebook SDKの403の禁止ページが表示されますが、招待状が正常に送信されます
しかし、ユーザーは(ログイン&は、Facebookのポップアップから友人を選択した後)のウェブサイトへの招待を送信すると、招待状が正常に送信されますが、ユーザーが見る - で(ページの「403禁止クロスサイトリクエストフォージェリが検出された要求が中止されました。」招待状が送付された同じURL)。このcsrf検証を克服する方法。
招待のためのJavaScriptコード(FacebookのSDKロードした後):
<script>
function invitePopup() {
FB.login(function(response) {
if (response.session) {
// user successfully logged in
FB.ui({
method:'fbml.dialog',
fbml: (
'<fb:request-form action="http://{{site.domain}}{% url account_view %}" method="post" invite="true" type="{{ site.name }}" ' +
'content="help the world by spreading good ideas. Join the move! <fb:req-choice url=\'http://{{site.domain}}{% url facebook_login %}?facebook_invitation=1\' label=\'Accept\' />" >' +
'<fb:multi-friend-selector showborder="false" bypass="cancel" actiontext="Invite your friends to join {{ site.name }}" /> '+
'</fb:request-form>'
),
size: { width:640, height:480}, width:640, height:480
});
$(".FB_UI_Dialog").css('width', $(window).width()*0.8); // 80% of window width
} else {
// user cancelled login
}
});
}
</script>
とトリガー部分:
<a href="#" onclick="invitePopup();" class="facebook">Invite your Facebook friends to join {{ site.name }} </a>
私はcsrf_exemptデコレータを使用して、すなわち、試した回避策はありを景色。しかし、私はcsrf保護が必要なそのビューでより多くのフォームを使用しているので、私はそれを使用したくありません。
ニース。私は答えとしてこの1つを受け入れることに投票します。 –