관리 메뉴

hyeals study

인스타그램 클론 (회원가입 및 로그인 기능) 본문

안드로이드

인스타그램 클론 (회원가입 및 로그인 기능)

hyeals 2020. 3. 30. 12:23

[LoginActivity.kt]

 

- 앞서 만들었던 로그인 화면에 로그인 기능 추가

 

  1. firebase에 연결해서 사용자를 추가할 수 있게 함
  2. 계정 생성 및 로그인은 이메일과 패스워드를 통해 수행되도록 함
  3. 로그인이 완료되면 다음 엑티비티인 MainActivity로 넘어가게 함

 

package com.example.hyealsinstargram

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import kotlinx.android.synthetic.main.activity_login.*

class LoginActivity : AppCompatActivity() {
    var auth : FirebaseAuth? = null

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

        auth = FirebaseAuth.getInstance()

        email_login_button.setOnClickListener {
            signinAndSignup()
        }
    }
    fun signinAndSignup(){
        auth?.createUserWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString())
            ?.addOnCompleteListener {
            task ->
                if(task.isSuccessful){
                    // Creating a user account
                    moveMainPage(task.result?.user)
                }else if(task.exception?.message.isNullOrEmpty()){
                    // Show the error message
                    Toast.makeText(this, task.exception!!.message, Toast.LENGTH_LONG).show()
                }else{
                    // Login if you have account
                    signinEmail()
                }
        }
    }
    fun signinEmail(){
        auth?.signInWithEmailAndPassword(email_edittext.text.toString(), password_edittext.text.toString())
            ?.addOnCompleteListener {
                    task ->
                if(task.isSuccessful){
                    // Login
                    moveMainPage(task.result?.user)
                }else{
                    // Show the error message
                    Toast.makeText(this, task.exception!!.message, Toast.LENGTH_LONG).show()
                }
            }
    }
    fun moveMainPage(user:FirebaseUser?){
        if(user!=null){
            startActivity(Intent(this, MainActivity::class.java))
        }
    }
}

email_login_button: 이 버튼 클릭 시 signinAndSignup 메소드가 실행됨

signinAndSignup: 회원가입 및 로그인 하는 메소드. 이 메소드는 3가지 기능이 있음

  1. 회원가입이 성공적으로 수행된 경우 다음 엑티비티로 넘어가는 기능
  2. 회원가입에 실패했을 경우 에러 메세지를 출력해주는 기능
  3. 두 가지 경우가 모두 아닐 때 signinEmail 메소드를 실행시키는 기능

signinEmail: 로그인 하는 메소드

  1. 아이디와 패스워드가 맞는 경우 다음 엑티비티로 넘어가는 기능
  2. 아이디와 패스워드가 틀렸을 경우 에러 메세지를 출력해주는 기능

moveMainPage: 다음 엑티비티인 MainActivity로 넘어가게 하는 메소드

 

* Intent 객체를 선언할 때 필요한 파라미터

  1. 현재 액티비티
  2. 전환할 액티비티

로그인 수행

위와 같이 이메일과 비밀번호를 입력하면,

 

유저 추가

firebaseUser부분에 내가 입력한 계정이 추가됨

Comments