寻找fandjango应用,尤其是中间件。https://github.com/jgorset/fandjango对我做到了
我正在处理Django项目。目的是从Facebook导入用户信息。首先,我使用Facebook提供的注册社交插件。我有一个基本模板,其中包括用于注册插件的iframe;就像Facebook api文档所建议的那样。呈现此模板的视图如下:
def registration(request):
if (request.method == "POST"):
return HttpResponse("it posted!")
else:
return render_to_response("ui/registration.html", {},
context_instance=RequestContext(request))
当我在插件上按注册时,Facebook将签名请求发送给我的视图时,Django抱怨缺少csrf令牌。我还尝试通过使用csrf(request)将其传递到上下文字典中来显式地包含csrf令牌,但是仍然不能解决问题。
CSRF保护用于防止跨站点发布。但是,在这种情况下,您希望接受来自Facebook的帖子,因此您应该在接受已签名请求的视图上使用csrf_exempt
装饰器。请参阅关于CSRF异常的部分:http://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#exceptions
您需要为此做几件事:
@csrf_exempt
装饰视图,如Mark所建议。或者,您可以编写自己的中间件来检查来自facebook的csrf令牌,而不是步骤2和3。
寻找fandjango应用,尤其是中间件。https://github.com/jgorset/fandjango对我做到了
寻找fandjango应用,尤其是中间件。https://github.com/jgorset/fandjango对我做到了