인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

dhkim0405님의 프로필 이미지
dhkim0405

작성한 질문수

[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)

SplashActivity 에서 uuid값을 결정할 때 Firebase.auth 대신 node.js 미들웨어를 사용하려 합니다.

작성

·

222

0

안녕하세요 개복치개발자님.

강의 정말 잘 듣고 있습니다!  다름이 아니라 몇가지 질문이 있어서 글 남겼습니다. 

 

현재 업로드 하신 강의 내용 중 Firebase.auth 가 수행하는 기능을 node.js 미들웨어로 구현하고자 합니다. 현재 강의 목적이 Android Client 역할 수행에 대한 내용다루기 인것을 잘 알고 있습니다. 그래서 로그인 서버를 따로 구축하지 않고 Firebase.auth를 이용하는 점에 대해서도 잘 이해하고 있습니다. 강의 외 내용을 질문드리는 것이 아닌가 죄송합니다만, 조언을 구할곳이 없어 글을 남겼습니다. 답변 주신다면 정말 큰 도움이 될 것 같습니다 ! 감사합니다!

 

서버 환경은 이렇습니다.

1. Linux Server내 회원정보를 저장할 MysqlDB

2. Android요청에 따른 동작을 수행하기위한 Node.js 미들웨어 

 

질문의 자세한 내용은 이렇습니다.

사용자의 로그인 상태를 SplashActivity에서 확인하고자 합니다. 이때 로그인 상태정보는 Linux Server - MySQL DB에 저장되어 있습니다.  Android(Client)에서 상태정보를 얻고자 한다면 Client정보 중 일부를 전송해 인증을 받아야 합니다. 그렇다면 서버로 전송 할 Clinet의 정보가 Android내부에 저장되어있어야 하는데, 이 정보를 내부 sqlite에 저장하는것이 바람직한 방법인지, 또한 인증을 위해 전송하는 데이터에는 일반적으로 어떠한 것들이 사용되는지 여쭙고자 합니다. 혹은 더 바람직한 방법을 알려주신다면 너무 감사하겠습니다.

 

답변 1

1

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

안녕하세요 dhkim0405님

이런 형태의 질문이 오랜만이라 너무 반갑습니다 :)

 

제가 이해하기로는 Nodejs로 만든 API서버와 Android와 통신하려고 하는데

Client 정보(token 값 같은 것들?)를 저장해놓는 것을 어떻게 하는지에 대한 방법에 대한 질문이신 것 같습니다.

 

1. 우선적으로 서버와 통신은 Retrofit을 이용하여 HTTP통신을 하여 API를 호출하시면 됩니다.

관련 예제들은 아래의 링크에 많으니 한번 참고해보시면 될 것 같습니다.

https://www.youtube.com/results?search_query=retrofit+example+kotlin

 

2. Client정보 같은 경우에는 localDB인 Room, Realm, SQlite같은 곳에 저장하는 방법도 있고

Android에서 SharedPreferences라는 것을 이용해서 저장하는 방법도 있습니다.

https://leveloper.tistory.com/133

https://developer.android.com/training/data-storage/shared-preferences?hl=ko

 

Node로 서버를 구현하셨다면 JWT형태로 유저 인증을 진행하셨을 것이라고 예상되는데

token값을 저장해놓고, Header에 token을 넣어서 Retrofit을 이용해 HTTP 통신을 하는 방향으로 진행하시면 좋지 않을까 하는 생각이 듭니다.

 

3. 인증을 위해 전송하는 정보는 서버에서 인증 관련 로직을 처리하는 것이기 때문에 서버에 설계대로 데이터를 넘겨주면 될 것 같습니다. 

 예를 들면 간단하게 ID,PWD를 이용하여 회원인증을 진행한다고 하면

 LoginActivity에서 처음 로그인 할 때 ID,PWD를 서버로 넘겨주고, 서버에서 Token값을 받아와서 안드로이드에 저장

 다시 앱을 실행 시 SplashActivity에서 Token값 여부 확인하여, 이미 유효한 토큰값이 있다면 LoginActivity를 생략하고 앱 메인페이지로 이동

 이런 형태로 구현하면 좋지 않을까 합니다.

 

 혹시 설명이 부족하거나, 제가 질문을 잘 못 이해했거나, 이해가 어려우신 부분이 있다면 언제든지 문의 남겨주세요 :)

dhkim0405님의 프로필 이미지
dhkim0405
질문자

이렇게 성의 있는 답변 해주셔서 너무 감사드립니다!!  

답변 내용을 통해 몰랐던 내용을 많이 알게되어 새로 공부할 것들이 생겨 너무 좋습니다! 또한 token이 유효한지 검사하는 과정에 대해 말씀해 주셔서 궁금증이 해결 되었습니다! 

다시한번 너무 감사드립니다!! 좋은하루 보내세요:)

dhkim0405님의 프로필 이미지
dhkim0405

작성한 질문수

질문하기