[안드로이드] firebase에서 제공하는 authentication 사용하기 - TodoList 앱

나고수·2021년 10월 21일
0

andriod

목록 보기
24/27

전체코드보기
Todolist앱 만들기 중 firebase에서 제공하는 authentication 사용하기 부분만 발췌했습니다.

//gradle
//firebase
    implementation platform('com.google.firebase:firebase-bom:28.4.2')

    // Declare the dependency for the Firebase Authentication library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-auth'

    //firebase ui
    implementation 'com.firebaseui:firebase-ui-auth:7.2.0'
    implementation 'androidx.work:work-runtime-ktx:2.7.0'
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var providers: ArrayList<AuthUI.IdpConfig>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //firebase가 제공하는 이메일로그인 ui 가져오기
        providers = arrayListOf(
            AuthUI.IdpConfig.EmailBuilder().build()
        )

        //현재 로그인이 안 되어 있으면 로그인 액티비티로 이동
        if (FirebaseAuth.getInstance().currentUser == null) {
            logIn()
        }
    
     private val signInLauncher = registerForActivityResult(
        FirebaseAuthUIActivityResultContract()
    ) { res ->
        this.onSignInResult(res)
    }

    fun logIn() {
        // Create and launch sign-in intent
        val signInIntent = AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setAvailableProviders(providers)
            .build()
        signInLauncher.launch(signInIntent)
    }
    
      //로그인 결과
      private fun onSignInResult(result: FirebaseAuthUIAuthenticationResult) {
        val response = result.idpResponse
        if (result.resultCode == RESULT_OK) {
            // 로그인 성공 시 
            // 데이터를 불러온다.
            model.reload() 
        } else {
            // 로그인 실패 시 
            //로그인 실패 시 todo액티비티 finish
            //(뒤로가기해도 todo activity가 보이지 않게)
            finish() 
        }
    }

    //로그아웃
    fun signOut() {
        AuthUI.getInstance()
            .signOut(this)
            .addOnCompleteListener { }
        logIn()
    }
}
profile
되고싶다

0개의 댓글