[Android] Firebase Login with Email ง่ายๆตาม Android Studio ด้วย 8 ขั้นตอน

Adulwit Chinapas
Lazy-Dev
Published in
3 min readFeb 27, 2019

สร้าง project ขึ้นมา คลิกรูปคนตรงมุมบนขวา กด Sign In

ทำการ login จากนั้น คลิก Tools->Firebase->Authentication->Email and password authentication

จะมี 8 ขั้นตอนในการทำ คลิก Connect to Firebase

พิมพ์ชื่อ project เลือก Thailand คลิก Connect to Firebase

คลิก Add Firebase Authentication to your app -> Accept Changes

ในขั้นตอน 3–6 ให้ copy code มาวางแล้วทำการ import

ส่วนของ import

import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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 com.google.firebase.auth.FirebaseUser;

ส่วนของ MainActivity.java

ไปที่ https://console.firebase.google.com/ เลือก project ที่สร้าง

คลิก Authentication->วิธีการลงชื่อเข้าใช้->อีเมล/รหัสผ่าน

คลิก เปิดใช้->บันทึก

*** ถ้า build.gradle ในส่วนของ com.google.gms:google-services เป็น 4.1.0 ให้เปลี่ยนเป็น 4.2.0

classpath 'com.google.gms:google-services:4.2.0'

สั่งรัน

ตรวจสอบ ผู้ใช้ จะพบ gg@gmail.com ที่สร้างไว้

สรุป

หลังจากปิดเปิดแอปใหม่จะพบว่ามีข้อความขึ้นว่า Authentication fail เพราะว่า email นี้ได้ถูกสร้างขึ้นแล้วจากการเรียก method ชื่อ createAccount() และเพราะสร้าง email เดิมก็เลยซ้ำ ทำให้ fail

ถ้าลอง comment ทั้งสอง method ออก แล้วรันใหม่

ก็พบว่ายังแสดง email ที่ login อยู่ เพราะตอนนี้การ login นั้นยังค้างอยู่ เราจึงสามารถนำ FirebaseUser ไปใช้ได้เลย ไม่ว่าจะเป็น getEmail(), getUid() ถ้าหากเรา login ด้วย google หรือ facebook (จะสอนในบทต่อไป) ก็จะใช้ getPhotoUrl(), getDisplayName() ได้ด้วย ทำให้ไม่ออกมาเป็น null แบบนี้

และถ้าต้องการ logout ก็เพียงใช้

FirebaseAuth.getInstance().signOut();

ก็จะทำให้ user นั้นไม่ค้างอยู่

สำหรับการสร้าง email ต้องมี password มากกว่า 6 ตัวอักษรขึ้นไป ตัวอย่างนี้ใช้ “123456”

--

--

Adulwit Chinapas
Lazy-Dev

Adul.dev I’m a Ph.D. student. My major project about Machine Learning (Python), Web (Vue), Android (JAVA), iOS (Objective-C), C#, Firebase, MySQL, PHP, Docker.