Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

인증 방식 / 통신 구현해야하는 부분 #17

Open
Jun99uu opened this issue Mar 12, 2022 · 3 comments
Open

인증 방식 / 통신 구현해야하는 부분 #17

Jun99uu opened this issue Mar 12, 2022 · 3 comments

Comments

@Jun99uu
Copy link
Member

Jun99uu commented Mar 12, 2022

인증방식

파이어베이스에서 문자인증을 할 수는 있지만, 이 경우 전화번호로 계정이 또 하나 생성됨.
우리는 이메일 - 비밀번호를 입력해서 로그인 하고 싶음.
때문에 문자인증하는 방식 그대로 사용하면 안됨.

때문에 우선 회원가입 페이지에서 이메일 비밀번호를 입력하고 다음 버튼을 누르면
파이어베이스에 해당 이메일과 비밀번호로 계정 생성이됨
이 때 이메일과 비밀번호로 만든 계정의 uid(고유번호)를 문자인증 페이지로 넘겨줌.
그리고 문자인증 페이지로 넘어감.
여기서 전화번호를 입력하고, 문자인증을 진행함.

문자인증에 성공하면, 파이어베이스에 해당 전화번호로 계정이 또 생기니까 인증에 성공하자마자 그 계정은 삭제함.
그리고 이전에 전달받은 uid(이메일-비밀번호 로그인) 값을 서버로 넘겨줌
서버는 해당 uid를 기본키로하는 테이블을 생성함

우리 화면에서는 이제 상세정보입력 페이지로 넘어감
역시나 uid 값과 함께 입력한 상세정보를 전달해줌으로써 알맞은 테이블에 정보가 입력될 수 있게함.

예외처리

  • 만약 필수정보입력(이메일-비밀번호 가입)을 진행하고 인증은 하지 않는다면?
    -> 때문에 메인 페이지에서 로그인된 user의 uid값이 서버에 있는지 확인해서, 없다면 인증페이지로 넘어가고 있다면 찐 메인화면으로 넘어가게함.
  • 만약 인증까지하고 추가정보 입력을 안했다면?
    -> 메인페이지에서 로그인된 user의 uid값의 테이블 내부에 추가정보가 있는지 없는지 확인을해서, 없다면 상세정보입력페이지로 있다면 찐 메인화면으로 넘어가게함.

통신 넣어야 할 부분

위에 길게길게 설명이 되어있긴 하나, 이해를 돕기 위한거고, 이 부분만 잘 되면 됨

MainActivity.kt

  • (로그인이 되어있을 때) uid 값이 서버에 저장되어있는지 확인. true면 아래로, false면 NumAuth 페이지로
  • (위에가 true일 때) uid 값이 기본키인 테이블 내부에 상세정보가 입력되어있는지 확인. true면 찐 메인화면으로, false면 DetaiInfoActivity로

NumAuth.kt

  • 문자인증 성공시 (위치는 주석해놨음) 전달받은 uid로 서버에 테이블 생성

그리고 문자 인증 동시에 여러번 요청하거나, 같은 번호로 계속 요청하면 몇시간에서 하루정도 차단된대
아마 너가 막 눌러서 차단 됐을 수도 있음
https://stackoverflow.com/questions/65792764/sms-verification-code-request-failed-when-authenticating-using-firebase-auth

암튼 위에 읽어보고... 이해안되는부분있으면 말해주셈
월요일에 나 학교 못가니까 통신을 너가 해봐야할듯

@Jun99uu
Copy link
Member Author

Jun99uu commented Mar 12, 2022

https://100sucoding.tistory.com/44
이런늒미

@parksk99
Copy link
Collaborator

parksk99 commented Mar 12, 2022

인증방식 리뷰

치명적 문제

SignUpAuth액티비티에서 인증 성공하고 파베에 계정 추가하고 NumAuth액티비티로 넘어감
근데 NumAuth에서 모르고 뒤로가기 눌렀더니 내가 입력한 이메일 절대 못쓰게됨
파베에 그 계정은 가비지가 되는거임

전화번호로 회원가입하기

이렇게 된거
이메일 + 비밀번호 말고
전화번호 + 비밀번호로 회원가입을 하면
귀찮은 방식을 따를 필요가 없지 않나.

통신에 넣어야 할 부분 리뷰

MainActivity.kt

  • (로그인이 되어있을 때) uid 값이 서버에 저장되어있는지 확인. true면 아래로, false면 NumAuth 페이지로
    로그인이 되어있는데 uid값이 서버에 없는 경우가 어떻게 일어나는지?
    그런 경우가 있나?
  • (위에가 true일 때) uid 값이 기본키인 테이블 내부에 상세정보가 입력되어있는지 확인. true면 찐 메인화면으로, false면 DetaiInfoActivity로
    마찬가지임

회원가입(인증 + 세부정보 입력)을 끝내고 로그인을 해야되는거니까
애초에 위 두 일이 일어나게 하면 안됨

NumAuth.kt

  • 문자인증 성공시 (위치는 주석해놨음) 전달받은 uid로 서버에 테이블 생성
    uid, 이름, 나이 등 정보를 한번에 서버로 넘겨준다고 했었음
    이렇게 하면 유승민 100퍼 화냄
    uid를 DetailInfo에 넘겨서 한번에 전달하는걸로

정리

1. 이메일 버리고 전화번호로 회원가입하는게 어떤지?

2. (1을 따랐을 때) 회원가입과 로그인 플로우 정립

SignUpAuth액티비티

전화번호와 비밀번호를 입력받음
전화번호 인증하기 -> 생성된 계정 id를 DetailInfo로 넘겨줌

DetailInfo액티비티

그대로 하고
id랑 정보랑 같이 서버 디비에 저장하라고 요청
회원가입시 필요한 모든 정보를 한번에 넘기기

3. 번호인증시오류

인증 번호 입력 안하고 완료누르면 런타임 에러

4. 문자는 절대안옴

@Jun99uu
Copy link
Member Author

Jun99uu commented Mar 12, 2022

뭔가 내가 말한게 제대로 전달이 안된 것 같은데...?

언급한 첫 번째 치명적 문제

=> 아님, 그럴일을 방지하기 위해서 예외 처리 적어놨음
만약 인증을 하지 않는다면, 서버에 해당 uid를 가진 테이블이 없기때문에 NumAuth로 연결해주면 됨.
그리고 언제든 인증이 완료되면 정상적인 이용이 가능해짐.

전화번호로 회원가입 하기

=> 전화번호 - 비밀번호가 없음.
애초에 회원가입 / 인증이 다른 개념이라고 생각해야됨.
파이어베이스에서 제공하는 번호인증은 로그인할때마다 항상 문자로 인증하는거임.
거기에 추가적인 비밀번호는 더할 수 없음.
그래서 개념을 약간 비꼬아서 생각한게 지금 나온 결론임
전화번호를 인증자체에만 사용하고, 계정을 더하려면 지금방식이 최선.

전화번호를 인증 자체에만 사용하고 ID와 PWD를 서버에 저장하는 식으로 할 수는 있겠지만
겹치는 아이디 찾기나 등등 서버와 또 통신할 일 많아짐.
나중에 비밀번호 변경, 탈퇴등도 귀찮아짐.
나는 걍 파이어베이스 쓰는김에 인증절차는 전부 여기서 처리하고 나중에 비번변경이나 탈퇴 이런거 다 파베에서 했음 좋겠음

통신 리뷰에 대하여

내가 작성한 부분에 대하여 가장 중요한 키워드가 파베 가입 그리고 인증 후 서버에 uid 테이블 생성
uid 테이블이 없는 경우를 위에서 계속 명시했음
너가 말한 치명적인 약점인 회원가입하고 인증안하고 나가는 경우
그 경우에는 인증 페이지로 이동시킴

아래도 마찬가지임

그리고 uid를 detailinfor와 함께 한번에 넘겨주게되면
그 회원이 인증을 안하고 그냥 나가게되면 진짜 가비지가 되는거임.
그 테이블이 비어있나 안비어있나로 정보가 들어가있는지 확인하는거니까,
테이블이 있다면 -> 인증은 한 것
테이블 안에 내용까지 있다면 -> 인증에 추가정보 입력까지 다 한 것.
이렇게 생각하면됨.

정리

1. 전화번호 인증방식 채택

파이어베이스에서는 전화번호-비밀번호 인증 이런거 없음
서버연동해서 id, pwd로하고싶으면 이제 너가 지우고해보셈 머리 존나아픔

2. 안되는 것과 에러

왜 안되는지 나도 모르겟음.. 너 안된다길래 에뮬 3개 돌려봤는데 3개 다 잘됨
문자가 오는 부분은 NumAuth.kt에 있으니
https://firebase.google.com/docs/auth/android/phone-auth?hl=ko&authuser=0
공식문서랑 비교하면서 한 번 봐보셈

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants