2011-04-07 5 views
2

Django 프로젝트로 작업하고 있습니다. 목표는 페이스 북에서 사용자 정보를 가져 오는 것입니다. 처음에는 페이스 북에서 제공하는 등록 소셜 플러그인을 사용하고 있습니다. 등록 플러그인의 iframe을 포함하는 기본 템플릿이 있습니다. 페이스 북 API 문서가 제안하는 바로 그 방식.Django : 페이스 북에서 CSRF 토큰 누락 'signed-request'게시

def registration(request): 
    if (request.method == "POST"): 
     return HttpResponse("it posted!") 
    else: 
     return render_to_response("ui/registration.html", {}, 
            context_instance=RequestContext(request)) 

을 최대한 빨리 플러그인에서 등록 누르면 페이스 북은 로그인 요청, 장고 누락 CSRF 토큰에 대한 불만을 내보기를 전송으로 다음과 같이이 템플릿을 렌더링 뷰입니다. 나는 또한 명시 적으로 csrf-token을 csrf (request)를 사용하여 컨텍스트 사전에 함께 전달하는 방법을 시도했지만 여전히 문제를 해결하지는 못했다. 빠른 응답은 크게 감사하겠습니다.

답변

3

CSRF 보호는 사이트 간 게시물을 방지하기위한 것입니다. 그러나이 경우 페이스 북에서 게시물을 받아들이므로 csrf_exempt 데코레이터를 사용하여 서명 된 요청을 수락해야합니다. CSRF 예외에 절을 참조하십시오 : http://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#exceptions

+0

저는 이미 그 해결책을 시도해 봤습니다. 그렇습니다. 그러나 페이스 북은 csrf 토큰의 사용을 권장합니다. http://developers.facebook.com/docs/authentication/ 페이지의 끝 부분을 확인하십시오. –

+0

csrf 토큰을 전달하는 방법은 Django가 당신이 면제를 사용하고 스스로 점검해야한다는 의미와 다릅니다. –

1

을 당신이에 대한 몇 가지 작업을 수행해야합니다

    의 끝에서 볼 때 당신은 당신의 페이스 북의 요청에 매개 변수로 CSRF 토큰을 통과해야합니다
  1. 그들의 documentation :
  2. 다음으로 마크 제안과 마찬가지로 @csrf_exempt으로보기를 장식해야합니다.
  3. 마지막으로,보기에서 csrf 토큰이 괜찮은지 확인할 수 있습니다. here이라는 django csrf 미들웨어 코드를 살펴보면 어떤 논리를 훔칠 수 있습니다.

대신 단계 2와 3 대신 페이스 북에서 오는 csrf 토큰을 확인하기 위해 자체 미들웨어를 작성할 수 있습니다.