본문 바로가기
프로그래밍/FireBase

[FireBase] 휴대폰인증

by Youngs_ 2022. 7. 4.

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

 

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")

onVerificationCompleted 은 번호인증이 끝난 상태로 따로 인증번호를 입력할 필요없는 상태입니다.

onVerificationFailed은 번호인증이 실패한 상태 입니다.

onCodeSent은 번호는 확인 되었으나 인증코드를 입력해야 하는 상태입니다.

 

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

번호를 발송하면 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

해당 게시글을 봐주세요!


전화번호 인증을 여러번 시도하면 안될수도있다고 합니다.

https://youngest-programming.tistory.com/440

 

[안드로이드] 파이어베이스 전화번호 인증 구현 방법

[2021-05-16 업데이트] 오랜만에 안드로이드 관련 포스팅입니다. 복습도 할겸 이전에 했던 프로젝트를 보던 중 전화번호 인증 구현에 대해 포스팅을 해보려고합니다. 안드로이드와 코틀린을 요즘

youngest-programming.tistory.com


출처 : https://onedaycodeing.tistory.com/174

 

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

우선 파이어베이스 콘솔에 들어가주세요. https://console.firebase.google.com/ 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com 프로젝트를 들어가주시..

onedaycodeing.tistory.com

 

댓글