0
在我的django網站中,我使用新的facebook javascript SDK來允許我的用戶向朋友發送朋友邀請。使用新的JavaScript SDK發送Facebook好友邀請顯示403禁止頁面,但邀請發送成功
但是當用戶發送的網站邀請(登錄&從Facebook的彈出選擇朋友後),邀請是發送成功,但用戶會看到一個「403禁止 - 跨站請求僞造檢測請求中止」頁(在發送邀請的網址相同)。如何克服這種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保護的表單。
不錯。我投票接受這個答案。 – 2012-01-10 15:52:28