REST API를 이용할 때 안드로이드에서 로그인 및 로그인 유지 구현방법에 대해


안녕하세요.

저는 프로그래밍 매우 초보입니다.

제가 장고(장고와 django-rest-auth)를 통해 REST api를 짜봤는데 여기서 로그인을 어떻게 구현해야하는건지 감이 도통 안 잡혀서 여기에 질문올립니다.

제가 만든 api 는 json 타입으로

{
    "username": "",
    "email": "",
    "password1": "",
    "password2": ""
}

를 post 방식으로 보낸 후에

HTTP 200 OK
  Allow: POST, OPTIONS
  Content-Type: application/json
  Vary: Accept

  {
    "key": "99defb355414133f00ad88e15771e3a8b43e71f"
}

이런식으로 json 타입으로 키값을 받습니다. 이 키값을 왜 주는지도 모르겠어요.

이 키값을 준다는 것은 basic authentication 임을 의미하는건가요?

    "description": "Check the credentials and return the REST Token\nif the credentials are valid and authenticated.\nCalls Django Auth login method to register User ID\nin Django session framework\n\nAccept the following POST parameters: username, password\nReturn the REST Framework Token Object's key.",

이렇게 설명이 나와있긴한데 이것만으론 제가 뭘 공부해야하는지도 모르겠어서 여쭙습니다.

초보라 어느부분을 공부해야할지, 어떻게 구현하는 걸 생각해야할지도 모르겠습니다.

알려주시면 감사하겠습니다.

retrofit가 좋다길래 그걸 여기에 적용해보고싶은데 대체 어떻게 해야하는지 모르겠습니다.

로그인도, 로그인유지도 잘 모르겠어서 조금이나마 힌트라도 주시면 감사하겠습니다.

  • 2016년 09월 03일에 작성됨

조회수 427


1 답변


좋아요
2
싫어요
채택취소하기

로그인 후 서버에서 내려주는 토큰(임의의 문자열) "key": "99defb355414133f00ad88e15771e3a8b43e71f"은 API를 요청할 때 필요합니다.

흐름을 간단하게 설명하면

  1. 안드로이드 앱에서 아이디와 비밀번호로 로그인 API 호출
  2. 서버에서는 토큰을 발급하고 세션에 저장
  3. 2) 에서 발급 받은 토큰을 안드로이드 앱에서는 서버 API 호출 시 HTTP 헤더 "Authorization": "99defb355414133f00ad88e15771e3a8b43e71f"에 추가해서 요청
  4. 서버에서는 2)에서 발급한 토큰과 3)의 토큰을 비교해 일치하는 경우에만 작업을 수행하고 일치하지 않으면 예외를 발생

로그인 유지 방법에 대해서 물어보셨는데 서버에서 발급한 토큰이 유효하다면 로그인이 유지되고 있다고 이해할 수 있습니다. 만일 오랫동안 앱을 사용하지 않다가 앱을 다시 실행시켰을 때 다시 로그인 시키고 싶다면 서버에서 해당 토큰을 만료시키고, 약속된 에러 코드를 클라이언트에게 내려준 후 클라이언트에서 로그인 화면을 띄우는 식으로 구현하면 됩니다. (서버 구현에 따라 토큰을 만료 시키지 않고 로그인을 계속 유지하는 방식도 사용할 수 있습니다.)

Retrofit은 쉽게 배울 수 있는 예제가 다양하게 존재합니다. 코드를 따라서 구현해보시면 충분히 매력을 느낄 수 있을 것이라 생각되고요. 아래 글들을 참고해보세요.


  • 친절한 설명 감사합니다.    홍민구   2016.9.4 18:56     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close