김호쭈
DevForYou
김호쭈
전체 방문자
오늘
어제
  • 분류 전체보기 (321)
    • • 데이터베이스(DB) (9)
      • __SQL__ (9)
    • •알고리즘(Algorithm ) (117)
      • 문제풀이 (99)
      • 스터디 (14)
      • 알고리즘 팁 (4)
    • •Compter Science (57)
      • Operating System (25)
      • Computer Network (1)
      • Computer Vision (16)
      • Artificial Intelligence (14)
      • Software Technology (1)
    • • 독서 (36)
      • Design Pattern (24)
      • 객체지향의 사실과 오해 (1)
      • Object Oriented Software En.. (11)
    • • 개발 (26)
      • React (3)
      • node.js (6)
      • Django (11)
      • Spring boot (6)
    • • 개발Tip (4)
      • GitHub (0)
    • •프로젝트 (2)
      • 물물 (2)
    • •App (54)
      • 안드로이드 with Kotlin (50)
      • 코틀린(Kotiln) (4)
    • •회고 (8)
    • •취준일기 (3)
    • • 기타 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Remote저장소
  • KMU_WINK
  • GitHubDesktop
  • 로컬저장소
  • local저장소
  • 깃허브데스크탑
  • 원격저장소
  • ㄱ

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김호쭈

DevForYou

[안드로이드&코틀린] 틴더앱 만들기#1, 파이어베이스 Authentication이용하여 로그인 회원가입 기능 초간단 구현하기
•App/안드로이드 with Kotlin

[안드로이드&코틀린] 틴더앱 만들기#1, 파이어베이스 Authentication이용하여 로그인 회원가입 기능 초간단 구현하기

2022. 4. 10. 02:57

최종 결과물이 아닌 본 게시글에서 공부했던 것의 결과물임.


 

# 결과물 미리보기

로그인 및 회원가입이 잘 이루어진걸 볼 수 있다.

아마 안드로이드의 가장 기초면서 가장 많이쓰이는 기술이 아닐까 싶다. 파이어베이스 Authentication을 이용하여 email로그인 회원가입 기능을 구현하는 것인데, 다른 소셜 로그인도 지원을 하기 때문에 로그인 단계를 편리하게 사용할 수 있다.

메인액티비와 로그인액티비티 두개를 분리했고, 메인액티비티의 onStart를 override하여 현재 로그인된 정보가 없으면 로그인 페이지로 이동 시키고, 그렇지 않다면 머물게 했다. 로그아웃 버튼을 누르면 현재 계정정보가 로그아웃 되고 로그인 액티비티로 넘어간다.

 

# 파이어 베이스에 앱 연결하기

## SDK 추가하기

파이어 베이스에서 프로젝트를 생성하고, 앱을 연동시킨다. 전에도 포스팅한 적 있기 때문에 이 내용은 생략한다. BumbleBee이상버전의 안드로이드 스튜디오를 사용하고 있으면 build.gradle을 추가시키는 것을 조금 다르게 해야하는데, 내가 저번에 포스팅한 글을 올려놓겠다. 아래 게시글에서 ##범블비에서 Firebase SDK 추가라고 적어놨던 항목을 참고하면 좋을거 같다.

 

[안드로이드&코틀린] 파이어베이스사용하여 알림보내기, Firebase Cloud Message, 범블비(bumblebee)버전

# 결과물 미리보기 파이어 베이스를 통하여 내 안드로이드 기기에 알림을 보내는 기능을 구현해봤다. 강의영상을 참고하기도 했지만 달라진 것도 많기 때문에 Firebase와 안드로이드 공식문서를

devforyou.tistory.com

 

## auth 사용을 위해 추가해야 할 dependencies 

implementation 'com.google.firebase:firebase-auth-ktx'

 

# 파이어베이스 Authentication사용하기

// 전역으로 사용할 FirebaseAuth를 만들어 준다
private lateinit var auth : FirebaseAuth

// 같은 기능이다
auth = Firebase.auth // Kotiln스러운 코드
auth = FirebaseAuth.getInstance() // JAVA스러운 코드

저번 dataclass를 사용하면서 느낀거와 같이 코틀린은 getter와 setter를 자바와 같은맥락에서 사용하지만 코틀린이 알아서 만들어 줬다. 그렇기 때문에 get이라는 키워드 자체를 사용하지 않았는데, 그런게 코틀린 스러운 코드인거 같다.

 

## 로그인 구현하기

파이어베이스가 알아서 해주기때문에 복잡하지도 어렵지도 않다. 함수만 잘 호출해 사용하면 된다.

private fun initSignupButton() {
    binding.signupButton.setOnClickListener {
        val email = binding.emailEditText.text.toString()
        val password = binding.passwordEditText.text.toString()

        auth.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener { task ->
                if(task.isSuccessful){
                    Toast.makeText(this,"회원가입에 성공했습니다!",Toast.LENGTH_SHORT).show()
                }else{
                    Toast.makeText(this,"이미 존재하는 계정이거나, 회원가입에 실패했습니다.",Toast.LENGTH_SHORT).show()
                }
            }
    }
}

 

## 회원가입 구현하기

회원가입 또한 마찬가지이다.

private fun initLoginButton() {
    binding.loginButton.setOnClickListener {
        val email = binding.emailEditText.text.toString()
        val password = binding.passwordEditText.text.toString()

        auth.signInWithEmailAndPassword(email,password)
            .addOnCompleteListener { task ->
                if(task.isSuccessful) {
                    Toast.makeText(this,"로그인에 성공했습니다!",Toast.LENGTH_SHORT).show()
                    // 액티비티 종료
                    finish()
                }else {
                    Toast.makeText(this,"아이디와 비밀번호를 확인해주세요.",Toast.LENGTH_SHORT).show()
                }
            }

    }
}

 

 

# 번외 기능

로그인 회원가입시 email,password EditText의 값이 넘어가게 되는데 만약 빈값이 있으면 어떻게 될까를 생각해보자. 이러한 경우를 방지하기 위해 addTextChangedListnener를 통해 값이 비어있을 경우에는 버튼클릭 자체를 막는 기능을 구현했다.

private fun detectEmailAndPasswordEmpty() {
    // when Activity Start
    binding.loginButton.isEnabled = false
    binding.signupButton.isEnabled = false

    binding.emailEditText.addTextChangedListener {
        val email = binding.emailEditText.text.toString()
        val password = binding.passwordEditText.text.toString()
        var enalbed = email.isNotEmpty() && password.isNotEmpty()
        binding.loginButton.isEnabled = enalbed
        binding.signupButton.isEnabled = enalbed
    }

    binding.passwordEditText.addTextChangedListener {
        val email = binding.emailEditText.text.toString()
        val password = binding.passwordEditText.text.toString()
        var enalbed = email.isNotEmpty() && password.isNotEmpty()
        binding.loginButton.isEnabled = enalbed
        binding.signupButton.isEnabled = enalbed
    }
}

지금까지 addTextChangedListener를 사용할때는 람다방식이 아닌 인자로 입력전, 입력중, 입력후의 기능을 override하여 사용했는데 이렇게도 사용할 수 있는거 같았다. 

참고하자!

 

[안드로이드&코틀린] 코틀린 람다함수 완벽분석, 안드로이드에서 람다함수의 활용 및 고차함수,

저번 포스팅에서 코틀린에서의 람다함수에 대해서 따로 뺴서 정리하기로 했었다. 내용이 워낙 많기도 하고 조금 중요한 개념이기때문에 따로 빼서 정리해야지 나중에 글을 볼때도 덜 헷갈리거

devforyou.tistory.com


# 느낀점

뷰바인딩은 너무 편하다.

파이어베이스는 위대하다!!

저작자표시 (새창열림)

'•App > 안드로이드 with Kotlin' 카테고리의 다른 글

[안드로이드&코틀린] 틴더앱 만들기#3, 파이어베이스 리얼타임데이터베이스 사용, 초간단 editText 다이얼로그 만들기  (0) 2022.05.04
[안드로이드&코틀린] 틴더앱 만들기#2, facebook 로그인 연동하기, onActivityResult  (0) 2022.05.03
[안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#2, 어댑터에 버튼 구현하기, 인탠트로 모델 보내기, 안드로이드 Room DB 사용하기, Thread와 thread 차이  (2) 2022.04.07
[안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#1, retrofit,gson, DTO, glide, viewBinding, inflate, layoutinflate, RecyclerView  (0) 2022.04.04
[안드로이드&코틀린] 푸시알림오는 알람 앱 만들기, as, alarmManger, pendingIntent, tag, data class get()예제  (0) 2022.04.03
    '•App/안드로이드 with Kotlin' 카테고리의 다른 글
    • [안드로이드&코틀린] 틴더앱 만들기#3, 파이어베이스 리얼타임데이터베이스 사용, 초간단 editText 다이얼로그 만들기
    • [안드로이드&코틀린] 틴더앱 만들기#2, facebook 로그인 연동하기, onActivityResult
    • [안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#2, 어댑터에 버튼 구현하기, 인탠트로 모델 보내기, 안드로이드 Room DB 사용하기, Thread와 thread 차이
    • [안드로이드&코틀린] 인터파크API이용하여 도서리뷰앱 만들기#1, retrofit,gson, DTO, glide, viewBinding, inflate, layoutinflate, RecyclerView
    김호쭈
    김호쭈
    공부하고 정리하고 기록하기

    티스토리툴바