[android] firebase auth (회원가입,로그아웃,로그인)

Pyo·2024년 6월 23일
0

플러터,안드로이드를 공부하면서 파이어베이스를 몇번 사용해 보았는데 사용할때마다 까먹어서 찾아보게 되어서 한번 정리를 하는게 좋다고 생각해서 이번에는 firebase의 인증 기능인 Authentication에 대해 정리를 할 것이다.

Firebase Authentication

Firebase는 Google에서 제공하는 개발 플랫폼으로, 모바일과 웹 애플리케이션 개발에 필요한 다양한 도구와 서비스를 제공한다. Firebase를 사용하면 개발자들은 서버 인프라를 직접 관리하지 않고도 애플리케이션의 백엔드 기능을 구현할 수 있다. Firebase Authentication(Firebase Auth)은 사용자의 인증을 간편하게 관리하고 구현할 수 있도록 도와주는 서비스로써 다양한 인증 방법을 제공하며, 안전하고 확장 가능한 인증 시스템을 구축할 수 있게 한다.

사용방법

  1. firebase에서 프로젝트를 생성한다.
  2. 생성한 프로젝트에서 안드로이드를 선택한다.
  3. 프로젝트 레벨의 app 폴더 안에 google-services.json을 넣는다.
  4. 라이브러리 추가
    project의 build.gradle.kts안에 라이브러리 추가
    id("com.google.gms.google-services") version "4.4.2" apply false

app의 build.gradle.kts안에 라이브러리 추가

// plugin {
	id("com.google.gms.google-services")
}
//
dependencies {
    implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
    implementation("com.google.firebase:firebase-analytics")
    implementation("com.google.firebase:firebase-auth-ktx") // firebase의 authentication을 사용하기 위함
}
  1. Authentication의 이메일/비밀번호 인증 사용하기

회원가입

회원가입 버튼을 누르게 되면 firebase authentication에 email과 password를 저장하면서 AuthResultActivity로 넘어가는 로직이다.



class JoinActivity : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    private  lateinit var  binding : ActivityJoinBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_join)

        auth = Firebase.auth

        binding = DataBindingUtil.setContentView(this,R.layout.activity_join)

        val email = binding.emailArea
        val password = binding.passwordArea

        binding.joinBtn.setOnClickListener{
            auth.createUserWithEmailAndPassword(email.text.toString(), password.text.toString())
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        Toast.makeText(this,"회원가입 성공",Toast.LENGTH_SHORT).show()
                        val intent = Intent(this,AuthResultActivity::class.java)
                        val user = auth.currentUser
                        startActivity(intent)
                    } else {
                        Toast.makeText(this,"회원가입 실패",Toast.LENGTH_SHORT).show()
                    }
                }
        }
    }
}

앱에서 회원가입을 하게되면 잘 저장되는것을 볼수 있다.

로그인

로그인 버튼을 누르게되면 입력한 email과 password를 이용하여 계정을 인증하고 인증이 AuthResultActivity 이동하는 로직이다.


class FireBasePracticeActivity : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    private lateinit var binding : ActivityFireBasePracticeBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_fire_base_practice)

        auth = Firebase.auth

        binding = DataBindingUtil.setContentView(this,R.layout.activity_fire_base_practice)

        val email = binding.emailArea
        val password = binding.passwordArea


        binding.loginBtn.setOnClickListener{
            auth.signInWithEmailAndPassword(email.text.toString(), password.text.toString())
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        Toast.makeText(this,"로그인 성공", Toast.LENGTH_LONG).show()
                        val intent = Intent(this,AuthResultActivity::class.java)
                        startActivity(intent)
                    } else {
                        Toast.makeText(this,"로그인 실패", Toast.LENGTH_LONG).show()
                    }
                }
        }

        binding.joinBtn.setOnClickListener{
            val intent = Intent(this,JoinActivity::class.java)
            startActivity(intent)
        }
    }
}

로그인한 계정에 대한 정보,로그아웃

현재 로그인 되어있는 계정을 로그아웃 시키고 FireBasePracticeActivity로 이동하는 코드이다. 또한, auth.currentUser를 이용하면 현재 로그인 되어있는 계정에대한 정보를 가져올수 있다.

class AuthResultActivity : AppCompatActivity() {

    private lateinit var auth : FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_auth_result)

        auth = FirebaseAuth.getInstance()

        findViewById<TextView>(R.id.currentUserEmailArea).text =  auth.currentUser?.email.toString()

        findViewById<Button>(R.id.logoutBtn).setOnClickListener{
            auth.signOut()
            val intent = Intent(this,FireBasePracticeActivity::class.java)
            startActivity(intent)
        }

    }
}

실행결과

정리

플러터 개발 당시에는 백엔드 개발자들이 있었기 때문에 파이어베이스를 사용할 기회가 많지 않았다. 하지만 안드로이드를 처음부터 공부하면서 파이어베이스에 대해 깊이 있게 공부할 수 있었다. 파이어베이스는 다양한 편리한 기능들을 제공하며, 특히 인증 시스템을 손쉽게 구현할 수 있도록 도와준다. 이 경험을 통해 파이어베이스의 장점과 그 활용 가능성을 더욱 명확하게 이해하게 되었다. 앞으로도 파이어베이스를 인증 기능 뿐만이 아니라 파이어 베이스의 여러가지 기능을 사용해보며 정리해 보도록 할 것이다.

0개의 댓글

관련 채용 정보