1

저는 facebook을 사용하여 인증을 수행하기 위해 python-social-auth를 사용하여 장고 프로젝트를 진행하고 있습니다. 로컬 호스트에서 django 서버를 실행하고 facebook을 내 응용 프로그램과 함께 http://127.0.0.1:8000/complete/facebook/으로 리디렉션하도록 설정하면 python-social-auth의 파이프 라인을 시작하여 사용자를 인증합니다. 내 데이터베이스로 포스트그레스를 사용하고 있습니다.django와 리디렉션 한 후 세션 값이 누락되었습니다. python-social-auth

이 메서드를 호출하고 인증을 시도하면 세션에 대한 정보를 찾을 수 없습니다. https://github.com/omab/python-social-auth/issues/534에서 나는 sessionid 쿠키가 덮어 쓰여지고 있다고 생각합니다. 인증없이 정적 페이지를로드하는 다른 URL로 페이스 북 리디렉션을 보내면 오류는 없지만 페이스 북에서 정보를 얻거나 인증하지 못하고 있습니다.

세션 ID 쿠키를 덮어 쓰지 않으려면 어떻게해야합니까? 물론 실제 문제입니까? 아니면 여기에 누락 된 다른 문제가 있습니까?

[03/Jun/2016 05:19:58] "GET /login/facebook/?next=/lithium-web/ HTTP/1.1" 302 0 
Internal Server Error: /complete/facebook/ 
Traceback (most recent call last): 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func 
    response = view_func(request, *args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view 
    return view_func(*args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/apps/django_app/utils.py", line 51, in wrapper 
    return func(request, backend, *args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/apps/django_app/views.py", line 28, in complete 
    redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/actions.py", line 43, in do_complete 
    user = backend.complete(user=user, *args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/base.py", line 41, in complete 
    return self.auth_complete(*args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/utils.py", line 229, in wrapper 
    return func(*args, **kwargs) 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/facebook.py", line 71, in auth_complete 
    state = self.validate_state() 
    File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/oauth.py", line 88, in validate_state 
    raise AuthStateMissing(self, 'state') 
AuthStateMissing: Session value state missing. 

답변

3

이 오류는 세션 쿠키가 https가 아닌 URL을 통해 저장되지 않아서 발생했습니다. django에서 SESSION_COOKIE_SECURE가 True로 설정된 localhost에서 테스트 할 때 세션 쿠키는 리디렉션 사이에서 유지되지 않으므로 세션을 확인할 모든 종류의 페이지 변경에서이 오류가 발생합니다.

테스트를 위해 거짓

SESSION_COOKIE_SECURE = 그것의 모든 좋은

+0

어떻게 당신이 비록 생산해야합니까? – dietbacon

+0

그들은, 그들은 단지 직장을 떠난하지 않습니다! :) – phaazon

+0

https 연결을 통해서만 세션 쿠키를 허용하려면 값을 True로 설정하십시오. –