backend as a service - information technology firebase.pdf · •...
TRANSCRIPT
![Page 1: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/1.jpg)
www . i t s c i .m ju . ac . t h / sayan
BACKEND AS A SERVICE (BaaS) : FIREBASE
SAYAN UNANKARD
8
![Page 2: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/2.jpg)
ข้อมูลอยู่ที่ไหนบน ANDROID?
ระบบฐานข้อมูลสามารถถูกจัดเก็บได้หลายที่ ขึ้นอยู่กับขนาดของฐานข้อมูล• ภายในเครื่องมือถือ Android เรียกว่า local database
• บน remote web server เครื่องเดียว
• กระจายอยู่บน remote web server หลายๆ ตัว หรือ บน cloud
2
![Page 3: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/3.jpg)
การใช้งาน REMOTE DATABASE
โดยทั่วไป Android จะใช้ระบบฐานข้อมูลที่ถูกฝังมากับระบบปฏิบัติการเรียกว่า SQLite แต่เนื่องจากบาง App จ าเป็นต้องแชร์ข้อมูลร่วมกับกับผู้อื่น ๆ ดังนั้นการจัดเก็บฐานข้อมูลไว้ที่ตัวเครื่องมือถือจึงไม่สามารถท าได้
การสร้าง Remote database คือการสร้างฐานข้อมูลไว้บนเว็บเซิร์ฟเวอร์
3
![Page 4: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/4.jpg)
การใช้งาน REMOTE DATABASE
Remote database ถูกติดตั้งบน WEB SERVER ซึ่งโดยทั่วไปเรียกว่า App’s back-end
การเริ่มใช้งานฐานข้อมูลที่เป็นส่วนของ web Server นั้นจ าเป็นต้องก าหนดสิทธิ์การเข้าใช้งานในระบบฐานข้อมูลตัวนั้น ๆ เช่น MySQL, Oracle หรือ MS SQL Server
• สร้าง username และ password ส าหรับเข้าใช้งานฐานข้อมูล
4
Select * From Student
Data rows
![Page 5: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/5.jpg)
JDBC
การติดต่อฐานข้อมูลสามารถท าได้โดยใช้ JDBC – Java Database Connectivity
5
![Page 6: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/6.jpg)
PROBLEM WITH REMOTE DATABASE
นอกจากปัญหาในการจัดการฐานข้อมูลเองแล้ว ยังมีส่วนอื่น ๆ ที่เป็นปัญหาในการใช้ Remote DB • Cost : ราคาการติดตั้งและการบ ารุงรักษาค่อนข้างสูง
• Administration : จ าเป็นต้องติดต้ัง ดูแลรักษา ทั้ง Server และ Database ด้วยตนเอง
• Security & Privacy : จ าเป็นต้องจัดการเรื่องของการก าหนดสิทธิ์การใช้งานและความปลอดภัยต่าง ๆ ของ Server เอง
• Robustness : ความเสถียร์ของฐานข้อมูล จ าเป็นต้องมีการจัดการ backup ข้อมูล การกู้คืนกรณีที่ระบบฐานข้อมูลมีปัญหา
• Scaling : การจัดการขนาดของฐานข้อมูล หากมีผู้ใช้ query ข้อมูลพร้อมกันหลาย ๆ เครื่องจะต้องจัดการป้องกันไม่ให้ความเร็วในการเข้าถึงข้อมูลลดลง
6
![Page 7: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/7.jpg)
WEB SERVICES TO DB
ในปัจจุบันการเข้าถึงฐานข้อมูลที่เป็นที่นิยมจะท าผ่าน Web Layer โดยที่• Client จะร้องขอการท างานของฐานข้อมูลผ่าน URL
• Web Server จะส่งข้อมูลกลับมาให้ยัง App ผ่านรูปแบบต่าง ๆ เช่น JSON, XML
7
www.itsci.mju.ac.th/getStudent?id=1234
Data as xml/json…
Web Server
DB Server
![Page 8: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/8.jpg)
BaaS – BACKEND AS A SERVICE
BaaS เป็นแฟลตฟอร์มส าหรับ Database/Service Hosting, Management และ Deployment ตัวอย่างเช่น Firebase, Google App Engine, Amazon Web Service Mobile, Oracle Mobile Cloud Service และ Azure
8
![Page 9: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/9.jpg)
FIREBASE
Firebase เป็น BaaS/Remote Database Management ที่ถูกพัฒนาโดย SF-based Google subsidiary• Real-time synchronized cloud database
• เป็นตัวที่ได้รับความนิยมและประสบความส าเร็จตัวหนึ่งในปัจจุบัน
คุณสมบัติของ Firebase
• API ในการเข้าถึงข้อมูลได้จาก Android, iOS, Java, JavaScript, Obj-C, Node.js
• REST API ที่มี libraries ส าหรับค าสั่งทั่วไปของ JS frameworks
• ความสามารถในการ sync และ notifications ของข้อมูลที่มีการเปลี่ยนแปลง
• Cloud scaling สามารถรองรับการเข้าใช้งานได้พร้อม ๆ กันหลายคน
• สามารถเป็น web hosting, login/authentication
9
![Page 10: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/10.jpg)
การจัดเก็บข้อมูลของ FIREBASE
มีการเก็บข้อมูลในรูปแบบของ map <key, value> • Value สามารถเป็นได้ทั้ง text, number, boolean, lists หรือ maps
• Object สามารถจัดเก็บในรูปของ map from {field name => value}
• List สามารถจัดเก็บในรูปของ map from {int index => value}
• ฐานข้อมูลมีลักษณะคล้ายกับ tree-like map structure
10
![Page 12: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/12.jpg)
การติดตั้ง FIREBASE HTTPS://FIREBASE.GOOGLE.COM
Create Realtime Database
12
![Page 13: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/13.jpg)
ADD FIREBASE TO ANDROID PROJECT
เลือกที่ Project Overview -> สัญลักษณ์ Android
13
![Page 14: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/14.jpg)
ADD FIREBASE TO ANDROID PROJECT
ระบุชื่อ Package ใน Android Project ลงใน Firebase จากนั้นกดปุ่ม Register App
14
![Page 15: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/15.jpg)
ADD FIREBASE TO ANDROID PROJECT
Download ไฟล์ google-services.json ไปไว้ใน Android Project
15
![Page 16: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/16.jpg)
ADD FIREBASE TO ANDROID PROJECT
Add Firebase SDK ใน Android Project (Project build.gradle)
16
![Page 17: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/17.jpg)
ADD FIREBASE TO ANDROID PROJECT
Add Firebase SDK ใน Android Project (Module App: build.gradle)
17
![Page 18: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/18.jpg)
ADD FIREBASE TO ANDROID PROJECT
เมื่อ sync gradle เรียบร้อยแล้ว กดปุ่ม Continue to console
18
![Page 19: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/19.jpg)
การติดตั้ง FIREBASE
ลงชื่อเข้าใช้งานในเว็บส าหรับ free account ที่ https://www.firebase.comติดต้ัง Firebase ลงใน android studio project’s build.gradle (Module: app)
ก าหนด Permission ใน AndroidManifest.xml
19
dependencies {
…
implementation 'com.google.firebase:firebase-database:19.2.0'
}
android {
…
packagingOptions{
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE-FIREBASE.txt'
exclude 'META-INF/NOTICE'
}
}
<uses-permission android:name="android.permission.INTERNET" />
![Page 20: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/20.jpg)
การเขียนข้อมูลลงใน FIREBASE
ก าหนดการเริ่มต้นใช้งานของ Firebase เพียงครั้งเดียวใน Activity ที่ถูกเรียกใช้เป็นครั้งแรก ในmethod onCreate()
การเขียนข้อมูลลงไปใช้ค าสั่ง fb.child(“key”).setValue(value);
โดยที่ key จะเป็นตัวแทนในการเรียกใช้ข้อมูล (object name)
ส่วน values เป็นได้หลายชนิด เช่น Boolean, Long, Double, List, Map<String, Object>
20
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FirebaseApp.initializeApp(this);
}
![Page 21: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/21.jpg)
ตัวอย่างการสร้าง FIREBASE
21
public void sampleCreateFirebase(){
FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
DatabaseReference myRef = database.getReference("student");
DatabaseReference stu1 = myRef.child("123");
stu1.child("id").setValue("123");
stu1.child("name").setValue("Sayan");
stu1.child("email").setValue("[email protected]");
}
![Page 22: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/22.jpg)
AUTO GENERATED KEY
ในบางกรณีที่ต้องการให้ Firebase สร้าง Auto ID ส าหรับข้อมูลแต่ละแถวได้ โดยใช้ค าสั่ง push()
ซึ่งช่วยในการที่มีผู้ใช้ต้องการบันทึกข้อมูลพร้อม ๆ กันหลายคน โดยไม่ต้องสนใจเรื่องของ key ที่ต้องสร้างให้
23
DatabaseReference stu1 = myRef.push();
stu1.child("id").setValue("234");
stu1.child("name").setValue("Somchai");
stu1.child("email").setValue("[email protected]");
Log.e("err", stu1.toString());
![Page 23: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/23.jpg)
การจัดเก็บข้อมูลด้วย CLASS
• หากต้องการจัดเก็บคลาสลงใน Firebase จ าเป็นต้องสร้างคลาสที่ไม่มีพารามิเตอร์ในส่วนของ constructor
• ทุก ๆ attributes จ าต้องมี method getAttributeName()
24
public class Student {
private String stuid;
private String stuname;
private String email;
public Student() {
}
…
}
Student stu3 = new Student("345", "Somchai", "[email protected]");
DatabaseReference stu1 = myRef.child(stu3.getId());
stu1.setValue(stu3);
![Page 24: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/24.jpg)
QUERY FIREBASE
ใน Firebase ไม่สามารถใช้ค าสั่ง SQL ได้เหมือนกับ Relational Database ทั่วไป ดังนั้นใน Firebase ได้เตรียมค าสั่งในการ query ข้อมูลโดยใช้ Query object, Ordering, Range และอื่น ๆ
25
FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
DatabaseReference myRef = database.getReference("student");
// Select * from Student where id = '234';
Query query1 = myRef.orderByKey().equalTo("234");
// Select * from Student where id >= 234;
Query query2 = myRef.orderByKey().startAt("234");
// Select * from Student where name like ‘B%’;
Query query3 = myRef.orderByChild("name").startAt("B").endAt("Bz");
![Page 25: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/25.jpg)
การอ่านค่าจาก DATASNAPSHOT
DataSnapshot เป็น คลาสส าหรับจัดเก็บข้อมูลที่ได้จากการ query โดยในตัวอย่างที่ให้มานี้เป็นการ query ข้อมูลที่มี id ตั้งแต่ 234 เป็นต้นไป
26
FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
DatabaseReference myRef = database.getReference("student");
Query query1 = myRef.orderByKey().startAt("234");
query1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()){
Log.d("test", ds.getKey() + " => " + ds.getValue());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
ระบุข้อมูลที่ต้องการ
dataSnapshot
![Page 26: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/26.jpg)
การอ่านค่าจาก DATASNAPSHOT
ผลลัพธ์ที่ได้จาก ds.getKey() => ds.getValue() ได้ดังนี้
27
for (DataSnapshot ds : dataSnapshot.getChildren()){
Log.d("test", ds.getKey() + " => " + ds.getValue());
}
getKey()
getValue()
345 => {name=Somchai, id=345, [email protected]}
-LXXsFenD9CQhsQI8Q-0 => {name=Somchai, id=234, [email protected]}
![Page 27: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/27.jpg)
FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
DatabaseReference myRef = database.getReference("student/123");
Query query1 = myRef.orderByKey();
query1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()){
Log.d("test", ds.getKey() + " => " + ds.getValue());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
ตัวอย่างการอ่านค่า
ผู้ใช้สามารถระบุค่าข้อมูลที่ต้องการได้โดยผ่านตัวแปร String ในส่วนของเมธอด fb.child(“….”) เช่น
28
ระบุ root ได้ที่นี่
email => [email protected]
stuid => 123
stuname => Sayan
getKey() getValue()
![Page 28: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/28.jpg)
QUERY METHODS
29
METHOD DESCRIPTION SQL
q.orderByKey()q.orderByChild(“name”)q.orderByValue()q.orderByPriority
เรียงล าดับตาม key ของข้อมูลเรียงล าดับตาม child keyเรียงล าดับตาม value ของข้อมูลเรียงล าดับตามความส าคัญ manually
Order by
q.startAt(value)q.startAt()
เริ่มต้นที่ valueข้อมูลทั้งหมดเรียงล าดับจากน้อยไปหามาก
>=ASC
q.endAt(value)q.endAt()
สิ้นสุดที่ value ข้อมูลทั้งหมดเรียงล าดับจากมากไปหาน้อย
<=DESC
q.limitToFirst(count) ข้อมูล count แถวเริ่มต้น LIMIT count
q.limitToLast(count) ข้อมูล count แถวสุดท้าย
q.equalTo(“value”) ข้อมูลที่ตรงกับ value =
![Page 29: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/29.jpg)
FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
DatabaseReference myRef = database.getReference("student");
DatabaseReference stu1 = myRef.child("345");
stu1.removeValue();
การ REMOVE ข้อมูล
ในการ Remove ข้อมูลออกจาก Firebase
30
ระบุ root ได้ที่นี่ระบุ key ที่ต้องการลบลบข้อมูล
![Page 30: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/30.jpg)
การก าหนด USER ใน FIREBASE
สามารถไปที่ Firebase website จากนั้นเลือกที่ Authentication แล้วเลือก Sign-in method
31
1) เลือกที่นี่
2) เลือกที่นี่
![Page 31: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/31.jpg)
การก าหนด USER ใน FIREBASE
จากนั้นเลือก Users และกดปุ่ม Add User เพื่อก าหนด Email และ Password
32
![Page 32: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/32.jpg)
DATABASE RULES
ก าหนดการอ่านและเขียนข้อมูลของ Database เป็นตามสิทธิ์ที่ถูกก าหนดให้
33
![Page 33: BACKEND AS A SERVICE - Information Technology Firebase.pdf · • ภายในเครื่องมือถือAndroid เรียกว่า local database ... iOS, Java,](https://reader033.vdocuments.site/reader033/viewer/2022060307/5f09c6c47e708231d4287271/html5/thumbnails/33.jpg)
SECURITY & AUTHENTICATION
โดยทั่วไป user สามารถเข้าถึง Firebase ได้ทั้งอ่านและเขียน• สามารถก าหนดความปลอดภัยของข้อมูลได้ โดยการก าหนด email และ password ส าหรับ
ข้อมูลผ่านทาง website ของ Firebase ได้
• จากนั้นแก้ไขโปรแกรมให้ login ก่อนเสมอถึงจะสามารถเข้าใช้งาน Firebase ได้
34
final FirebaseDatabase database =
FirebaseDatabase.getInstance("https://your_url.firebaseio.com/");
mAuth = FirebaseAuth.getInstance();
mAuth.signInWithEmailAndPassword("[email protected]", “password")
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
FirebaseUser user = mAuth.getCurrentUser();
...
}else{
Log.e("test", "login failed");
}
}
});
private FirebaseAuth mAuth;
เมื่อ login ผ่าน