개발자 승학

안드로이드 Firebase 회원가입(이메일) 연동방법 본문

it/안드로이드(android studio)

안드로이드 Firebase 회원가입(이메일) 연동방법

유승학 2018. 8. 10. 16:05


안녕하세요~


이번에는 안드로이드 스튜디오와 Firebase를 연동하여 이메일 로그인 연동 예제를 알려드릴게요.


우선,

firebase에 들어가신다음 새 프로젝트를 만듭니다.




firebase에 들어가신다음 새 프로젝트를 만듭니다.


생성된 프로젝트를 클릭하시면 아래와 같은 화면이 뜹니다.


안드로이드 예제이기에 Android 앱에 Firebase 추가를 클릭합니다.





그럼 아래와 같이 나옵니다.



패키지 이름과 디버그 서명 인증서 SHA-1두 가지를 입력할게요.


중간에 앱 닉네임은 선택사항입니다.


패키지 이름은 안드로이드 스튜디오 프로젝트를 새로 생성합니다.


그런다음 app -> manifests에 들어가면


3번 라인에


package = "com.example~~.프로젝트명" 뭐 이런식입니다.


"" 안에 있는 패키지를 복사하여 firebase 패키지에 붙여넣습니다.


그 다음 디버그 서명 인증서는 나중에 구글 로그인할 때 필요한 것인데 이메일 로그인한 하실 분들은 생략하셔도 됩니다.


디버그 서명 인증은



위 사진처럼 signingReport를 더블클릭하면 안드로이드 스튜디오 하단에 창이 뜹니다.


거기에서 SHA1 : ~~~~~~~~~~~~~ 이부분입니다.


앱추가를 합니다.




google-services.json을 다운받고 위 사진 경로에다가 넣어줍니다.


안드로이드 스튜디오에 sdk를 추가합니다.





다음으로 아래 사진처럼 이메일 설정을 해줍니다.




이제 안드로이드 스튜디오로 옵니다.



안드로이드 스튜디오 상단에 Tools > Firebase > 우측- Authentication 


Email and password authentication을 클릭합니다.



위 사진처럼 파이어베이스에 앱을 연결하고 파이어베이스 인증에 앱을 추가합니다.



[res -> values -> string.xml]

<resources>
<string name="app_name">FirebaseEmail</string>

<string name="email">이메일</string>
<string name="password">비밀번호</string>

<string name="signin">로그인</string>
<string name="success_login">로그인 성공</string>
<string name="failed_login">로그인 실패</string>

<string name="signup">회원가입</string>
<string name="success_signup">회원가입 성공</string>
<string name="failed_signup">회원가입 실패</string>
</resources>


[activity_main.xml]


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/tv_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/email"
android:layout_marginTop="200dp"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp" />

<EditText
android:id="@+id/et_eamil"
android:layout_below="@id/tv_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>

<TextView
android:id="@+id/tv_password"
android:layout_below="@id/et_eamil"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/password"
android:layout_centerInParent="true"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>

<EditText
android:id="@+id/et_password"
android:layout_below="@id/tv_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginRight="50dp"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/et_password">

<Button
android:id="@+id/btn_signUp"
android:text="@string/signup"
android:onClick="singUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="50dp"/>

<Button
android:id="@+id/btn_signIn"
android:text="@string/signin"
android:onClick="signIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginRight="50dp"/>

</LinearLayout>

</RelativeLayout>


[MainActivity.java]


package com.example.ysh.firebaseemail;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Patterns;
import android.view.View;
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;

import java.util.regex.Pattern;

public class MainActivity extends AppCompatActivity {

// 비밀번호 정규식
private static final Pattern PASSWORD_PATTERN = Pattern.compile("^[a-zA-Z0-9!@.#$%^&*?_~]{4,16}$");

// 파이어베이스 인증 객체 생성
private FirebaseAuth firebaseAuth;

// 이메일과 비밀번호
private EditText editTextEmail;
private EditText editTextPassword;

private String email = "";
private String password = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// 파이어베이스 인증 객체 선언
firebaseAuth = FirebaseAuth.getInstance();

editTextEmail = findViewById(R.id.et_eamil);
editTextPassword = findViewById(R.id.et_password);
}

public void singUp(View view) {
email = editTextEmail.getText().toString();
password = editTextPassword.getText().toString();

if(isValidEmail() && isValidPasswd()) {
createUser(email, password);
}
}

public void signIn(View view) {
email = editTextEmail.getText().toString();
password = editTextPassword.getText().toString();

if(isValidEmail() && isValidPasswd()) {
loginUser(email, password);
}
}

// 이메일 유효성 검사
private boolean isValidEmail() {
if (email.isEmpty()) {
// 이메일 공백
return false;
} else if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
// 이메일 형식 불일치
return false;
} else {
return true;
}
}

// 비밀번호 유효성 검사
private boolean isValidPasswd() {
if (password.isEmpty()) {
// 비밀번호 공백
return false;
} else if (!PASSWORD_PATTERN.matcher(password).matches()) {
// 비밀번호 형식 불일치
return false;
} else {
return true;
}
}

// 회원가입
private void createUser(String email, String password) {
firebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// 회원가입 성공
Toast.makeText(MainActivity.this, R.string.success_signup, Toast.LENGTH_SHORT).show();
} else {
// 회원가입 실패
Toast.makeText(MainActivity.this, R.string.failed_signup, Toast.LENGTH_SHORT).show();
}
}
});
}

// 로그인
private void loginUser(String email, String password)
{
firebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// 로그인 성공
Toast.makeText(MainActivity.this, R.string.success_login, Toast.LENGTH_SHORT).show();
} else {
// 로그인 실패
Toast.makeText(MainActivity.this, R.string.failed_login, Toast.LENGTH_SHORT).show();
}
}
});
}
}


이제 firebase에 들어가서 확인해보시면 회원정보가 있습니다.




궁금하신점은 댓글달아주세요.


[깃허브]

https://github.com/aiex1234/AndroidFirebaseLoginExample

Comments