FirebaseUI로 손쉽게 Android 앱에 로그인 추가 라는 문서가 있습니다.


트위터, 페이스북, 깃헙, 구글 로그인을 모두다 통합해 놓은 firebase 라이브러리입니다.


매우 간결한 코드만으로 해당 기능들을 구현하여 앱에 적용할 수 있습니다.


위의 소셜서비스 말고도 이메일 인증이나, 전화번호 인증 기능도 쉽게 추가할수 있습니다.


심지어 익명 로그인과 같은 익명 인증 기능도 제공하네요





다만 역시나 그렇듯이, UI의 커스터마이징에 한계가 있습니다. 아이콘, 색상, 크기정도만 바꿀수 있습니다.



이 기능들중에 좀 더 관심이 가는 기능이 전화번호로 인증하기 입니다.


왜 관심이 가느냐면,



요근래 많은 앱들은 회원가입시에 휴대폰번호를 요구하고 그 휴대폰번호의 실소유자가 맞는지 인증문자를 보내어 확인합니다.


그리고 그 안에 담긴 인증코드를 입력하여 최종 인증을 마치게 되지요.



이 과정에서 몇가지 작업을 사용자가 직접 타이핑하지 않고 자동화해줄수 있다면 


사용자 경험측면에서 훨씬 나은 경험을 제공해줄 수 있을것입니다.



1. 사용자가 직접 휴대폰번호를 타이핑하지 않아도 되도록 


사용자가 휴대폰번호를 직접 타이핑하지 않고, 자동으로 입력된다면 편합니다.



2. 인증문자를 받으면 자동으로 인증번호가 입력되도록


문자를 받았을때 문자의 인증번호를 직접 타이핑하지 않고, 자동으로 입력된다면 편합니다.



사실 이 두가지 기능은 많은 앱에서 이미 제공하고 있는 기능이기도 합니다.


굉장히 편리하기도 하죠.




그런데 제가 왜 firebase의 auth기능에 관심을 갖느냐면



위에서 언급한 2개의 기능을 구현하려면 필수적으로 phone과 sms의 permission이 필요합니다.


사용자에게 꽤나 민감한 퍼미션을 요구하게 되는것이죠.


(물론 많은 분들이 그냥 확인 버튼을 누르긴하지만...)



firebase에서 제공해주는 api를 사용하면 phone과 sms permission을 요구하지 않고도


위의 기능을 구현할수 있습니다. (단 google play service가 필요합니다.)





https://developers.google.com/identity/sms-retriever/overview



ui의 흐름은 전체적으로 위의 흐름과 같습니다.


사용자는 자신이 쓰고 있는 휴대폰번호 중에 가입할 번호를 선택하면(번호가 다른 유심이 두개 있을수도 있겠죠?)


앱제공자는 그 번호를 가져올수 있고, 그 번호로 인증코드가 담긴 문자메시지를 보냅니다


그리고 앱은 문자메시지 수신을 대기하게 됩니다.


문자메시지가 5분내에 수신되면 해당 sms의 메시지 내용을 읽을 수 있습니다.



휴대전화를 이용한 인증을 고정된 UI가 아닌 커스터마이징해서 구축할수 있는 가이드 입니다.


그리고 아무런 추가적인 퍼미션을 요청하지 않아도 됩니다.





해당 기능을 구현한 샘플 프로젝트입니다.


https://github.com/spotlight21c/GooglePhoneAuth


인증코드 문자를 발송하는 서버측 코드는 굳이 작성하지 않아도


다른 폰으로 테스트할 폰에게 문자메시지를 해당 형태로 직접 타이핑하여 전송해도 테스트해볼수 있습니다.





그런데 실제로 쓰기에 한가지 굉장히 아쉬운점이 있는데요.


당연히 보안을 위해 모든 수신된 문자를 읽을수 있지는 않고


특정한 문자열이 담긴 sms 를 읽을수 있습니다.


그 sms가 되기 위한 조건은



시작 문자열은


<#> 


끝나는 문자열은 문서에서 안내하는 방법대로 hash 문자열을 만들어서 전송해야 합니다.




<#> Use 123456 as your verification code in Example App!

FA+9qCX9VSu



이렇게 말이죠



그런데 이 hash 문자열이 너무나도 거슬리네요


자칫하면 저 문자열을 verification code로 오인할까봐 걱정도되고요.



그래서 막상 실제로 사용하기에는 조금 애매하지 않나 싶습니다.


문자메시지라도 구글이 대신 공짜로 보내주면 그러려니 하겠는데 그것도 아니고... ㅠㅠ







Tip. hash를 만드는중에 sha256 명령어를 사용해야되는데요


mac에서 sha256sum 명령어를 찾을수 없는 경우에 다음과 같이 심볼릭링크를 만들어주시면 사용가능합니다.


$ sudo ln -s /usr/local/bin/gsha256sum /usr/local/bin/sha256sum



출처: http://trend21c.tistory.com/2072 [나를 찾는 아이]