1

Android 웹 사이트를 호스팅하는 Django API와 상호 작용하는 Android 애플리케이션이 있습니다.Android에서 Django 사용자 객체 사용

Django 웹 사이트에서 사용자는 Google +/Facebook/Twitter (django-social-auth 사용)로 로그인하고 모든 후속 요청에는 사용자를 식별하는 사용자 개체가 포함됩니다. 나는 이것이 쿠키를 통해 이루어진다 고 가정합니다.

Android 애플리케이션에 동일한 기능을 구현하고 싶습니다. 응용 프로그램은 사용자를 Google +/Facebook/Twitter에 로그인 한 다음 사용자에게 로그인하는 API에 액세스 토큰을 보냅니다.

Android 응용 프로그램으로 돌아가려면 어떻게해야합니까? Django가 로그인 한 사용자를 인식하도록하기 위해 모든 요청에 ​​대한 API가 있습니까?

답변

2

해결책을 찾았습니다. Django에 로그인 한 후 request.session.session_key을 반환합니다. 이것을 애플리케이션에 저장하고 인증 요청을해야 할 때마다 POST 매개 변수로 다시 전달합니다.

Django, 당신은 자동으로 요청에 User 객체로이를 변환하는 등의 장식을 만들 수 있습니다

def extract_user(function): 
    def handle_extraction(request, *args, **kwargs): 
     # Try to store the request.user if a session id is specified. 
     if request.POST.get('SESSION-ID'): 
      request.user = get_user_from_request_w_session_id(request) 

     # Execute the function. 
     return function(request, *args, **kwargs) 

    return handle_extraction 

인증 된 사용자가 지금과 같이 주석이 기대 모든 기능 :

@extract_user 
def my_function(request): 
    ... 

@login_required을 사용하려는 경우 해당 주석도 사용할 수 있습니다. AFTER@extract_user 등 :

@extract_user 
@login_required 
def my_function(request): 
    ... 
+0

어떻게 세션 ID를 게시해야합니까? 헤더 또는 일반적으로? – SMahdiS

+0

@SMahdiS, POST 매개 변수로 다시 전달합니다. –

관련 문제