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

조회수 8333회

안녕하세요.

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

제가 장고(장고와 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가 좋다길래 그걸 여기에 적용해보고싶은데 대체 어떻게 해야하는지 모르겠습니다.

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

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

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

    흐름을 간단하게 설명하면

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

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

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

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)