0

allauthdjango-rest-auth을 사용하여 Facebook 로그인 API를 만듭니다. 두 패키지 문서를 모두 읽고 rest-auth doc의 예제를 사용했습니다. 모든 단계를 수행 했으므로 DRF 찾아보기 가능한 API보기에서 성공적으로이 API를 사용할 수 있으며 성공적으로 등록을 수행하고 있습니다. 우체부와 같은 다른 곳에서이 API를 사용하려고하면 CSRF 토큰을 묻습니다.
csrf_exempt 데코레이터를 사용해 보았지만이 URL에는 효과적이지 않은 것 같습니다. 그들이 django-rest-auth에 대한 문서에서 언급 한 바와 같이django : Facebook 등록 API에 대한 rest-auth 및 allauth에는 CSRF 토큰이 필요합니다.

이 나머지 것들의
url(r'^rest-auth/facebook/$', csrf_exempt(FacebookLogin.as_view()), name='fb_login'), 

은 동일합니다

여기 내 URL의 설정이다.

제가 누락 된 부분이나 해결해야 할 부분을 파악할 수 없습니다. 문제를 진단하는 데 도움을 주시면 감사하겠습니다.

답변

0

TL FacebookLogin보기에서 authentication_classes =()을 설정하십시오.

로그인 및 레지스터보기에는 인증 검사가 없어야합니다. DRF DEFAULT_AUTHENTICATION_CLASSES을 토큰 인증 및 세션 인증으로 설정했다고 가정합니다. 따라서 요청이 처리 중일 때 서버가 인증 토큰을 찾지 못하여 폴백으로 CSRF가 필요한 세션 인증을 시도합니다.이 경우 inturn이 CSRF 오류를 발생시킵니다.

+0

이것은 매우 간단한 해결책입니다. 나는이 방법으로 그것을 얻지 못했다. 그래서 누군가로부터의 요청을 허용함으로써 조금 더 긴 방법으로 고쳤다. 실제로 말한 것과 같은 것입니다. –

+0

다른 문제가 있습니다. 어쩌면 당신은 생각을 가지고 있을지도 모릅니다. 이 방법으로 생성 된 토큰 (소셜 로그인)은 헤더로 보낼 때 인증되지 않습니다. 그러나 전통적인 사용자의 토큰은 요청과 함께 전송 될 때 인증됩니다. 어떤 아이디어가 잘못 되었나요? @ Sagar –

+0

예. 소셜 로그인 토큰은 앱 로그인에 사용되지 않습니다. 앱 사용자 계정을 fb 사용자 계정에 매핑하는 것입니다. – Sagar