상세 컨텐츠

본문 제목

[안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능

안드로이드

by aries574 2022. 10. 21. 18:46

본문


이번 시간에는 채팅앱 만들기 네 번째 시간 등록한 이메일로 로그인하는 기능과 

회원가입 사용자 정보를 DB에 저장하는 기능을 구현하겠습니다. 

이전 포스팅은 아래 링크를 들어가시면 됩니다. 

2022.10.20 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스

 

[안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스

이번 시간에는 채팅앱 만들기 세 번째 시간 회원가입 인증 서비스 만드는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.19 - [안드로이드] - [안드로이드 코틀린

aries574.tistory.com


목차

1. 실행 화면
2. 로그인 LoginActivity.kt
3. Realtime Database 설정
4. 회원가입 SignUpActivity.kt
5. 사용자 모델 클래스 User.kt


1. 실행 화면

 - 로그인 -

 - 사용자 저장 -

 

2. 로그인 LoginActivity.kt

- 설명 -

 1.  mAuth: FirebaseAuth

   인증 객체 

 2. mAuth = Firebase.auth

   인증 객체 초기화

 3. login(email: String, password: String)

   로그인 기능 함수

 4. mAuth.signInWithEmailAndPassword(email, password)

   인증 서비스 기능

   등록된 이메일패스워드 검증

class LogInActivity : AppCompatActivity() {

    lateinit var binding: ActivityLogInBinding

    lateinit var mAuth: FirebaseAuth

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

        //인증 초기화
        mAuth = Firebase.auth

        //로그인 버튼 이벤트
        binding.loginBtn.setOnClickListener {

            val email = binding.emailEdit.text.toString()
            val password = binding.passwordEdit.text.toString()

            login(email, password)
        }

        //회원가입 버튼 이벤트
        binding.signUpBtn.setOnClickListener {
            val intent: Intent = Intent(this@LogInActivity, SignUpActivity::class.java)
            startActivity(intent)
        }
    }

    /**
     * 로그인
     */
    private fun login(email: String, password: String){
        mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    //성공 시 실행
                    val intent: Intent = Intent(this@LogInActivity,
                        MainActivity::class.java)
                    startActivity(intent)
                    Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
                    finish()
                } else {
                    //실패 시 실행
                    Toast.makeText(this, "로그인 실패", Toast.LENGTH_SHORT).show()
                    Log.d("Login", "Error: ${task.exception}")
                }
            }
    }
}

 

3. Realtime Database 설정

 3-1 firebase 홈페이지 

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

 

로그인 - Google 계정

이메일 또는 휴대전화

accounts.google.com

 3-2 프로젝트 클릭

 3-3 빌드 -> Realtime Database

 3-4 데이터베이스 만들기

 3-5 위치 선택 -> 다음

 3-6 테스트 모드 시작 체크 -> 사용 설정

 3-7 생성된 화면

 3-8 라이브러리 등록

   - tools -> firebase -> 위에서 3번째(Realtime Database) 선택

   - Get started with Realtime Database [KOTLIN] 클릭

 

반응형


4. 회원가입 SignUpActivity.kt

- 설명 -

 1. signUp(name, email, password)

   회원가입 함수에 name 파라미터 추가

 2. addUserToDatabase(name: String, email: String, uId: String)

   데이터베이스에 저장하는 함수

   이름, 이메일, uid(인증 데이터에 저장된 정보)

 3. mDbRef.child("user").child(uId).setValue(User(name, email, uId))

   user안에 uid안에 사용자 정보를 저장합니다. 

class SignUpActivity : AppCompatActivity() {

    lateinit var binding: ActivitySignUpBinding

    lateinit var mAuth: FirebaseAuth

    private lateinit var mDbRef: DatabaseReference

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

        //인증 초기화
        mAuth = Firebase.auth

        //db 초기화
        mDbRef = Firebase.database.reference

        binding.signUpBtn.setOnClickListener {

            val name = binding.nameEdit.text.toString().trim()
            val email = binding.emailEdit.text.toString().trim()
            val password = binding.passwordEdit.text.toString().trim()

            signUp(name, email, password)
        }
    }

    /**
     * 회원 가입
     */
    private fun signUp(name: String, email: String, password: String){

        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // 성공시 실행
                    Toast.makeText(this, "회원가입 성공", Toast.LENGTH_SHORT).show()
                    val intent: Intent = Intent(this@SignUpActivity, MainActivity::class.java)
                    startActivity(intent)
                    addUserToDatabase(name, email, mAuth.currentUser?.uid!!)
                } else {
                    // 실패시 실행
                    Toast.makeText(this, "회원가입 실패", Toast.LENGTH_SHORT).show()
                    Log.d("SignUp", "Error: ${task.exception}")
                }
            }
    }

    private fun addUserToDatabase(name: String, email: String, uId: String){
        mDbRef.child("user").child(uId).setValue(User(name, email, uId))
    }
}


5. 사용자 모델 클래스 User.kt

 - 설명 -

   1. DB에 저장할 사용자 정보를 담을 모델 클래스

data class User(
    var name: String,
    var email: String,
    var uId: String
){
    constructor(): this("", "", "")
}

2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법

 

[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법

이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 4. 메인 코드 MainActivity.kt 1. 실행 화면 2. ..

aries574.tistory.com

2022.10.11 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법

 

[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법

이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1. 실행화면 2. 뷰 바인딩 3. 라이브러리 등록 4. 메인 화면 activity_main.xml 5. 메인 코드

aries574.tistory.com

2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성

 

[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성

이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역