Firebase를 사용하여 SignUp 및 SignIn으로 Android 앱 만들기

전제 조건:


  • 안드로이드 스튜디오 설치.
  • Java 언어를 알고 있어야 합니다.
  • 안드로이드의 기본 개념.

  • 파이어베이스란?



    Firebase는 Google의 모바일 개발 플랫폼입니다. 더 나은 사용자 기반으로 빠르고 고품질의 앱에 대한 플랫폼을 제공합니다. Firebase에는 알려진 요구사항에 따라 사용할 수 있는 여러 보완 기능이 있습니다.

    Firebase를 Android Studio와 연결하기 위한 주요 요구 사항은 Google 리포지토리 버전이 26 이상이어야 한다는 것입니다.

    버전 확인 단계:



    도구를 클릭한 다음 SDK 관리자를 클릭하십시오.
    SDK 도구 탭을 클릭합니다.
    Google 저장소 확인
    Google 리포지토리가 26 이상이 아닌 경우 설치를 눌러 더 높은 버전의 리포지토리를 설치합니다.
    설치가 완료될 때까지 기다리십시오.

    Firebase와 프로젝트를 연결하는 방법은 무엇입니까?



    Firebase에 앱을 연결하는 방법은 두 가지가 있습니다.
  • 앱을 Android 스튜디오와 직접 연결합니다.
  • 도구를 클릭한 다음 Firebase를 클릭합니다.
  • Firebase가 어시스턴트 창을 엽니다.
  • 표시된 시작하기 자습서를 클릭하고 그에 따라 연결합니다.


  • 집에서 console.firebase.google.com에 연결합니다.

  • 콘솔 Firebase를 엽니다.


  • 프로젝트 이름 입력->계속
  • 계속을 클릭하십시오


  • 이 안드로이드 앱에서 우리는 무엇을 합니까?



    로그인 및 등록 애플리케이션을 만들고 인증을 위해 두 페이지를 Firebase에 연결합니다. 사용자 정보는 사용자가 등록할 때 등록됩니다. 등록된 사용자만 로그인할 수 있으며 그렇지 않으면 오류 메시지가 표시됩니다.

    응용 프로그램에 사용된 구성 요소:


  • LinearLayout: 선형 레이아웃으로 작업하는 것은 매우 쉽습니다. 구성 요소를 활동에 쉽게 설정할 수 있습니다.
  • EditText: 사용자로부터 입력을 받는 데 사용됩니다. 텍스트에 유효성 검사를 추가할 수도 있습니다. 예를 들어, 사용자로부터 숫자 입력만 받으려는 경우 입력 유효성 검사를 입력할 수 있습니다.
  • 버튼: 버튼에 사용자 작업이 필요합니다. 사용자 작업에서는 작동하지 않습니다. 사용자가 특정 버튼을 누를 때만 작동합니다.
  • 토스트: 토스트는 UI 구성 요소입니다. 짧은 메시지를 표시하는 데 사용됩니다. LENGTH_LONG AND LENGTH.SHORT와 같은 함수를 사용하여 메시지 기간을 입력할 수 있습니다.

  • 응용 작업:


  • 애플리케이션의 홈 페이지에 들어가려면 등록해야 합니다.
  • 등록 페이지로 이동하여 등록하십시오.
  • 이제 등록한 이메일과 비밀번호를 입력하여 로그인 페이지로 이동합니다.
  • 올바른 세부 정보를 입력했다면 앱의 홈 페이지로 이동합니다.

  • 등록 페이지의 XML 파일

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        tools:context=".Register">
        <EditText
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="4pt"
            android:layout_marginLeft="4pt"
            android:layout_marginTop="10pt"
            android:hint="Username"/>
        <EditText
            android:id="@+id/password1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10pt"
            android:layout_marginLeft="4pt"
            android:layout_marginRight="4pt"
            android:hint="Password"/>
        <Button
            android:id="@+id/sign"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="4pt"
            android:layout_marginLeft="4pt"
            android:layout_marginTop="10pt"
            android:text="SIGN UP"/>
    
    
    </LinearLayout>
    
    



    로그인 페이지의 XML 파일

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        tools:context=".login">
        <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="4pt"
            android:layout_marginLeft="4pt"
            android:layout_marginTop="10pt"
            android:hint="Username"/>
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10pt"
            android:layout_marginLeft="4pt"
            android:layout_marginRight="4pt"
            android:hint="Password"/>
        <Button
            android:id="@+id/btn_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="4pt"
            android:layout_marginLeft="4pt"
            android:layout_marginTop="10pt"
            android:text="LOG IN"/>
        <Button
            android:id="@+id/btn_signup"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="4pt"
            android:layout_marginLeft="4pt"
            android:layout_marginTop="10pt"
            android:text="SIGN UP"/>
    
    
    </LinearLayout>
    
    



    등록 페이지의 Java 코드

    package com.example.firebaseaap;
    
    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Patterns;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import com.google.android.gms.tasks.OnCompleteListener;
    import com.google.android.gms.tasks.Task;
    import com.google.firebase.auth.AuthResult;
    import com.google.firebase.auth.FirebaseAuth;
    
    public class Register extends AppCompatActivity {
        Button btn2_signup;
        EditText user_name, pass_word;
        FirebaseAuth mAuth;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            user_name=findViewById(R.id.username);
            pass_word=findViewById(R.id.password1);
            btn2_signup=findViewById(R.id.sign);
            mAuth=FirebaseAuth.getInstance();
            btn2_signup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String email = user_name.getText().toString().trim();
                    String password= pass_word.getText().toString().trim();
                    if(email.isEmpty())
                    {
                        user_name.setError("Email is empty");
                        user_name.requestFocus();
                        return;
                    }
                    if(!Patterns.EMAIL_ADDRESS.matcher(email).matches())
                    {
                        user_name.setError("Enter the valid email address");
                        user_name.requestFocus();
                        return;
                    }
                    if(password.isEmpty())
                    {
                        pass_word.setError("Enter the password");
                        pass_word.requestFocus();
                        return;
                    }
                    if(password.length()<6)
                    {
                        pass_word.setError("Length of the password should be more than 6");
                        pass_word.requestFocus();
                        return;
                    }
                    mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            if(task.isSuccessful())
                            {
                                Toast.makeText(Register.this,"You are successfully Registered", Toast.LENGTH_SHORT).show();
                            }
                            else
                            {
                                Toast.makeText(Register.this,"You are not Registered! Try again",Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
    
                }
            });
    
        }
    }
    



    로그인 페이지의 Java 코드

    package com.example.firebaseaap;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Patterns;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    import com.google.firebase.auth.FirebaseAuth;
    
    public class login extends AppCompatActivity {
        private EditText user_name, pass_word;
        FirebaseAuth mAuth;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);
            user_name=findViewById(R.id.email);
            pass_word=findViewById(R.id.password);
            Button btn_login = findViewById(R.id.btn_login);
            Button btn_sign = findViewById(R.id.btn_signup);
            mAuth=FirebaseAuth.getInstance();
            btn_login.setOnClickListener(v -> {
                String email= user_name.getText().toString().trim();
                String password=pass_word.getText().toString().trim();
                if(email.isEmpty())
                {
                    user_name.setError("Email is empty");
                    user_name.requestFocus();
                    return;
                }
                if(!Patterns.EMAIL_ADDRESS.matcher(email).matches())
                {
                    user_name.setError("Enter the valid email");
                    user_name.requestFocus();
                    return;
                }
                if(password.isEmpty())
                {
                    pass_word.setError("Password is empty");
                    pass_word.requestFocus();
                    return;
                }
                if(password.length()<6)
                {
                    pass_word.setError("Length of password is more than 6");
                    pass_word.requestFocus();
                    return;
                }
                mAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(task -> {
                    if(task.isSuccessful())
                    {
                        startActivity(new Intent(login.this, MainActivity.class));
                    }
                    else
                    {
                        Toast.makeText(login.this,
                                "Please Check Your login Credentials",
                                Toast.LENGTH_SHORT).show();
                    }
    
                });
            });
            btn_sign.setOnClickListener(v -> startActivity(new Intent(login.this,Register.class )));
        }
    
    }
    


    예제 앱


  • Simple SignIn SignUp Source Code
  • 좋은 웹페이지 즐겨찾기