P & D
Research and Development가 아니라 Philosophy and Development의 P & D 입니다. 개발글에 있어서 새로운 시도를 하고 있습니다. 그저 개발기를 적어 내려가는 것이 아니라, 어떤 철학을 가지고 개발을 해나가고 있는지, 어떤 시도를 했는지, 개발은 어떻게 하는지를 적어 내려갑니다. 이번 시리즈는 도움을 주고 받는 방법 - 이타인클럽의 철학과 개발 과정을 다룰 것입니다.
이전글 - [철학과 개발] #15 Firebase 프로젝트 생성
철학: 도움을 주고 받는데 익명성이 도움이 된다!
도움 주고 받기 앱 helpus는 지역기반 서비스로, 살고 있는 동네는 표시되지만 사용자의 이름이나 개인 정보는 표시되지 않습니다. 그 이유는 도움을 주고 받는데 익명성이 좀 더 효율적이라고 생각해서 입니다. 아무래도 도움을 주고 받는 상대방이 누군지 알게 되면 누구는 도움을 더 주고 싶어할 것이고, 또 다른 누구는 도움을 주고 싶지 않으려고하려는 성향이 있기 때문입니다.
그래서, 앱 가입할 때, 이름이나 성별 등의 정보를 수집하지 않습니다.
앱 가입/로그인 방법 중 가장 많이 사용하는 것이 이메일 인증과 전화번호 인증입니다. 이메일인증은 한 사용자가 이메일 계정만큼 생성할 수 있습니다. 이메일 인증을 하지 않는 앱의 경우 가짜 이메일로도 가입할 수 있습니다. 또, 대부분의 개발자가 이메일 로그인을 사용할 때, 테스트 계정으로 [email protected]
과 같은 가짜 이메일 계정을 사용하는 경우가 많습니다. 이런 경우 쉽게 테스트 계정이 뚤릴 수 있죠. 물론 암호도 password
와 같은 단순한 것을 사용할 때 그렇습니다.
반면에 전화번호 인증방법은 사용자당 1개만 계정을 생성할 수 있습니다. 복수의 전화번호를 가진 경우 복수개의 계정을 만들 수 있지만, 그 수는 매우 적습니다. 따라서, 계정을 여러 개 만들어서 앱 남용을 하는 것을 어느 정도 방지할 수 있습니다. 부정 사용 계정의 경우 계정 정지를 시키기도 용이합니다.
따라서 도움을 주고 받는 앱 helpus의 경우는 사용자당 1개의 계정이 바람직하기 때문에, 전화번호 인증 방식을 택했습니다. 철학은 익명성은 어느 정도 보장하면서, 남용을 어느 정도 방지하고자 하는 것입니다.
개발
앞서 전화번호 로그인 방식이 좋다고 했는데, 앱 개발시에는 이메일 로그인이 편합니다. 왜냐하면 전화번호 로그인의 경우 전화번호를 입력하고 인증 코드를 받아서 입력해야만 로그인이 됩니다. 안드로이드의 경우는 좀 더 황당한게, 인증코드를 수신하면, 자동으로 처리하게 되어 있습니다. 물론 디버그 모드에서는 이러한 문제가 없지만, 디버그/릴리스 모드를 변경해 가며 테스트하는 것도 꽤 번거롭습니다.
결론은 개발초기에는 이메일 로그인을 사용하고, 개발완료 단계에서 전화번호 로그인 방식을 택하는게 편합니다.
위 두가지 로그인 방식을 Firebase에 모두 지원합니다. 여기서는 전화번호 로그인 및 인증에 대해서 설명합니다.
Firebase 전화번호 로그인 설정
firebase 콘솔로 가서 프로젝트를 선택하고, 왼편 메뉴에서 Authentication을 누릅니다.
아래와 같이 Sign-in method 탭에서 Phone을 선택하고, Enable 시킵니다.
위 화면에서 아래 부분에 테스트 전화번호와 SMS 인증코드를 넣는 곳이 있습니다. 예시에 나온대로 +와 국가번호, 전화번호 순으로 입력하고, 마지막에 SMS 인증코드를 입력하면 됩니다. 정확히 입력하지 않으면 오류가 발생해서 등록되지 않습니다.
Firebase에서 로그인 설정은 이게 다입니다.
Firebase Phone Auth 오류
나중에 구글 플레이에 앱을 등록할 때 phone auth를 사용하면 다음과 같은 에러가 발생할 것입니다.
This app is not authorized to use Firebase Authentication. Please verify that the correct package name and SHA-1 are configured in the Firebase Console. [ App validation failed ]
이것은 Firebase 프로젝트에 SHA-1가 설정되지 않아서입니다. 구글 플레이에서 별도의 앱 signing key를 관리하고 있습니다 .이것을 포함하여 android 앱의 debug/release 키를 등록해야 합니다. 우선 다음과 같이 android-studio에서 SHA-1값을 찾아서 프로젝트에 설정합니다.
- android studio로 프로젝트를 연다
- 우측의 gradle 탭을 연다
- app -> Tasks -> signingReport를 더블 클릭하여 debug, release SHA-1 값을 출력한다.
- android-studio 콘솔에서 debug, release SHA-1 값을 확인한다.
- 아래와 같이 Firebase Project Settings에서 안드로이드 프로젝트를 선택하고 SHA-1 값을 입력한다.
나중에 구글 플레이에 등록할 때, 아래와 같이 앱의 SHA-1 certificate fingerprint를 Firebase 프로젝트에 추가합니다.
- SHA-1를 입력한 후에, google-services.json 파일을 다운로드해서 RN 프로젝트의 android/app 폴더로 복사한다.
뭔가 두서가 없네요. 요약하면 다음과 같습니다.
- Firebase에서 전화번호 로그인 enable
- android-studio에서 SHA-1를 찾아서 Firebase 프로젝트에 등록
- google-services.json 파일을 다시 다운로드해서 react native 프로젝트의 android/app에 복사
로그인 코드를 같이 올리려고 했는데, 코드에 다국어 설정 부분이 있어서 먼저 다국어 설정, 사용 방법에 대한 글을 작성한 후에 작성해야 겠네요.
도움 주고 받는 앱 helpus
앱 사용자 중 다음과 같은 도움이 가능하 사용자들이 있습니다.
- 최면 상담, 치료
- 영어, 일본어 관련 문제
- 건강 상담, 심리 상담
- 숙박, 용돈 (미확인)
물론, 저도 명상, 루시드 드림 관련 상담이 가능합니다.
구글 플레이: https://play.google.com/store/apps/details?id=club.etain.helpus
애플 앱 스토어: https://apps.apple.com/us/app/helpus-instant-help-in-town/id1496615309
APK 파일 다운로드설치: https://etain.club/download
소개 영상
사용법
보다 자세한 내용은 홈페이지를 참고해 주세요.
https://etain.club