본문 바로가기
Mobile App/Android

[안드로이드] SMS Retriever API 자동입력하는 방법은? (*Android Hash Key 가져오기 *KMC 등 본인확인 기관 문의 )

by Jman 2024. 3. 17.

SMS Retriever API 를 이용하여 본인인증 인증번호를 App 에서 문자로 받은 인증번호를 Callback 받아 화면에 바로 노출시킬 수 있다.

아래 링크에 사용 방법이 잘 설명되어 있으니, 보면 좋을 것 같다.

 

https://developers.google.com/identity/sms-retriever/overview?hl=ko

 

SMS Retriever API를 사용한 자동 SMS 인증  |  Credential Verification  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 SMS Retriever API를 사용한 자동 SMS 인증 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. SMS Re

developers.google.com

 

그래도 몇 가지 중요한 것을 짚어보자.

기획팀과 서버개발자, 그리고 클라이언트 개발자와 협업을 통해 해당 기능을 적용 해야하는데 어떤 수순으로 일을 진행하면 될까?

 

SMS Retriever API 적용 순서

1. 우선 기획팀이 SMS Retrierver 기능을 적용할 수 있게 본인확인 기관(KMC, 모빌리언스 등등) 에 문의를 넣어야 한다.

2. 안드로이드 개발자는 현 앱이 상용화가 되어있다면, 구글 앱스토어에 올라가 있는 해당 앱에 Hash Key 값이 존재하는데 그 값을 추출해야 한다. 위 Hash Key 값을 추출하여 본인확인 기관 측에 원하는 문구를 정리하여 문의를 하면 된다.

3. 그 이후는 클라이언트 개발자와 서버 개발자와 API 관련하여 소통하면 될 것이다.

 

 

SMS Retriever API 에 사용할 Hash 추출하는 방법은?

추출 방법은 2가지 방법이 있다.

일단, 첫 번째로는 Terminel 내 명령어를 통해서 추출하는 방법이 있다.

두 번째로는 내부 코드를 짜서 Logcat 을 이용하여 Hash 값을 찍어서 확인하는 방법이다.

 

첫 번째 터미널 방법은 아래 링크를 확인해보면 좋을 것이다.

https://developers.google.com/identity/sms-retriever/verify?hl=ko#computing_your_apps_hash_string

 

서버에서 SMS 인증 수행  |  Credential Verification  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 서버에서 SMS 인증 수행 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 전화번호를 자동

developers.google.com

위 링크를 통해서 확인이 가능하겠지만, 

MasOS 같은 경우에 명령어가 다르기 때문에 아래 명령어를 하나 더 남기도록 하겠다.

 

keytool -exportcert -alias [xxxx] -keystore [xxxx.keystore] | xxd -p | tr -d "[:space:]" | echo -n com.clipandbooks.sample.smsretriever `cat` | shasum -a 256 | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

 

 

두 번째 방법은 아래 링크를 남기겠다. 그것을 토대로 Hash 값을 뽑으면 될 것이다

https://github.com/googlearchive/android-credentials/blob/master/sms-verification/android/app/src/main/java/com/google/samples/smartlock/sms_verify/AppSignatureHelper.java

 

Hash 값은 11자리로 되어있을 것이다. 해당 값을 문자 끝에 넣어야 한다.

또한, 이 외에도 SMS 형식의 규칙이 존재하여, 앱 콜백함수로 인증번호가 넘어갈 것이다.

  • Be no longer than 140 bytes
  • Begin with the prefix <#>
  • Contain a one-time code that the client sends back to your server to complete the verification flow

위 규칙을 따라 아래와 같은 예시로 문구를 정하면 될 것이다.

<#> [회사명] 본인확인을 위해 인증번호 [xxxxxx] 를 입력해주세요. FLw4Kt/c2eq

 

 

 

이 외에, 서버 측과는 SMS 인증번호 발송, 재발송, 확인, 타임아웃 대기 등등 실제 서비스를 위해 맞춰야할 부분을 커뮤니케이션을 하면 될 것이다.