본문 바로가기
Android

<코틀린 Kotlin> 안드로이드 파이어베이스 휴대폰인증

by 일용직 코딩노동자 2022. 2. 15.
728x90
반응형

우선 파이어베이스 콘솔에 들어가주세요.

 

https://console.firebase.google.com/

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

프로젝트를 들어가주시면 왼쪽에

 

Authentication을 들어가주세요.

 

로그인 방법 설정 클릭

 

새 제공업체 추가

전화버튼 클릭

 

사용 설정을 체크해주세요.

 

여기서 안드로이드 클릭하시면 기본적인 의존성추가부분이 나옵니다.

 

저는

 

implementation platform('com.google.firebase:firebase-bom:29.0.2')
implementation 'com.google.firebase:firebase-analytics-ktx'

이렇게 추가했습니다.

 

그리고 전역변수?(상수) 로

 

val auth = Firebase.auth
var verificationId = ""

auth, verificationId 를 생성해줍니다.

 

val callbacks = object : PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
    override fun onVerificationCompleted(credential: PhoneAuthCredential) { }
    override fun onVerificationFailed(e: FirebaseException) {
    }
    override fun onCodeSent(verificationId: String, token: PhoneAuthProvider.ForceResendingToken) {
        this@MainActivity.verificationId = verificationId
    }
}

val optionsCompat =  PhoneAuthOptions.newBuilder(auth)
    .setPhoneNumber("+821012345678")
    .setTimeout(60L, TimeUnit.SECONDS)
    .setActivity(this)
    .setCallbacks(callbacks)
    .build()
PhoneAuthProvider.verifyPhoneNumber(optionsCompat)
auth.setLanguageCode("kr")

인증번호를 발송할 버튼리스너에 해당 코드를 작성해줍니다.

번호를 발송하면 verificationId값을 저장합니다 (이녀석은 나중에 인증번호 확인에 유용하게 쓰일녀석입니다)

핸드폰번호를 국제코드를 적어서 발송하셔야합니다!

 

국제코드 변환이 귀찮으신 분들께서는

 

https://onedaycodeing.tistory.com/172

 

코틀린 안드로이드 핸드폰번호 국가코드로 변환시키기

fun phoneNumber82(msg : String) : String{ val firstNumber : String = msg.substring(0,3) var phoneEdit = msg.substring(3) when(firstNumber){ "010" -> phoneEdit = "+8210$phoneEdit" "011" -> phoneEdit..

onedaycodeing.tistory.com

해당 게시글을 참조해주세요!

 

자! 이제 발송을 했으면 인증여부를 확인해야합니다.

 

EditText에 인증번호를 적으셨을것이고 이제 인증번호 확인하는 버튼리스너에 코드를 작성하겠습니다.

 

우선 함수하나 셋팅해줍니다.

 

private fun signInWithPhoneAuthCredential(credential: PhoneAuthCredential) {
    auth.signInWithCredential(credential)
    .addOnCompleteListener(this) { task ->
        if (task.isSuccessful) {
        	//인증성공
        }
        else {
            //인증실패
        }
    }
}

그리고 인증번호 확인버튼 리스너에

 

val credential = PhoneAuthProvider.getCredential(verificationId, "EditText에 적은 인증번호값")
signInWithPhoneAuthCredential(credential)

이렇게 해주시면 위 함수가 호출되어 성공 및 실패여부를 알 수 있습니다.

 

여기서 인증번호를 발송하는데 자동으로 입력을 하고싶다! 하시는 분들께서는

 

https://onedaycodeing.tistory.com/170

 

안드로이드 코틀린 SMS(문자) 인증번호 자동입력 BroadcastReceiver

문자로 오는 인증번호를 추출하는 브로드케스트 리시버(BroadcastReceiver) 를 해보겠습니다. 우선 BroadcastReceiver 클래스를 만들어볼게요. 클래스 이름은 SMSReceiver로 지었습니다! 그리고 메니페스트에

onedaycodeing.tistory.com

이쪽 게시글을 참조해주세요

 

그리고 번호 발송 시 로봇체크 뜨시는 분들이 계실거에요.

 

Verifting you're not a robot...이렇게요

 

이런분들은 조금 복잡하긴 한데 

 

https://onedaycodeing.tistory.com/175

 

파이어베이스 휴대폰인증 로봇체크(reCaptcha) 생략하기!

우선 파이어베이스 콘솔에 가셔서 프로젝트 설정으로 가주세요. 그럼 이런식으로 SHA 인증서 지문을 추가하는 곳이 있는데요!! 우선 이부분 먼저 추가해주겠습니다. 저 SHA-1 / SHA-256 디버깅 서명

onedaycodeing.tistory.com

해당 게시글을 봐주세요!

728x90
반응형

댓글