คุณใช้ Firebase Authentication เพื่ออนุญาตให้ผู้ใช้ลงชื่อเข้าใช้เกมได้โดยใช้ วิธีการลงชื่อเข้าใช้อื่นๆ ซึ่งรวมถึงการลงชื่อเข้าใช้ด้วยอีเมลและรหัสผ่าน และ ผู้ให้บริการข้อมูลประจำตัวแบบรวมศูนย์ เช่น Google Sign-In และ Facebook ช่วงเวลานี้ บทแนะนำช่วยให้คุณเริ่มต้นใช้งาน Firebase Authentication โดยแสดงวิธีเพิ่ม ลงชื่อเข้าใช้เกมของคุณด้วยรหัสผ่าน
ก่อนเริ่มต้น
ก่อนที่จะใช้งานได้ Firebase Authentication คุณต้องทำดังนี้
ลงทะเบียนโปรเจ็กต์ Unity และกำหนดค่าให้ใช้ Firebase
หากโปรเจ็กต์ Unity ของคุณใช้ Firebase อยู่แล้ว ก็หมายความว่า ลงทะเบียนและกำหนดค่าสำหรับ Firebase แล้ว
หากไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลด ตัวอย่างแอป
เพิ่ม Firebase Unity SDK (โดยเฉพาะ
FirebaseAuth.unitypackage
) ไปยัง โปรเจ็กต์ Unity
โปรดทราบว่าการเพิ่ม Firebase ลงในโปรเจ็กต์ Unity จะเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโปรเจ็กต์ Unity ที่เปิดอยู่ (เช่น คุณดาวน์โหลดไฟล์การกำหนดค่า Firebase จากคอนโซล แล้วย้าย ลงในโปรเจ็กต์ Unity)
ลงชื่อสมัครใช้ผู้ใช้ใหม่
สร้างแบบฟอร์มที่อนุญาตให้ผู้ใช้รายใหม่ลงทะเบียนกับเกมของคุณโดยใช้อีเมลของตน
และรหัสผ่าน เมื่อผู้ใช้กรอกแบบฟอร์มแล้ว ให้ยืนยันอีเมล
ที่อยู่และรหัสผ่านที่ผู้ใช้ให้ไว้ แล้วส่งไปยัง
เมธอด CreateUserWithEmailAndPasswordAsync
:
auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
// Firebase user has been created.
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
ลงชื่อเข้าใช้สำหรับผู้ใช้ที่มีอยู่
สร้างแบบฟอร์มที่อนุญาตให้ผู้ใช้เดิมลงชื่อเข้าใช้ด้วยอีเมลของตน
และรหัสผ่าน เมื่อผู้ใช้กรอกแบบฟอร์มแล้ว ให้เรียกเมธอด
เมธอด SignInWithEmailAndPasswordAsync
:
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
ตั้งค่าเครื่องจัดการเหตุการณ์การเปลี่ยนแปลงสถานะการตรวจสอบสิทธิ์และรับข้อมูลผู้ใช้
หากต้องการตอบกลับเหตุการณ์การลงชื่อเข้าใช้และออกจากระบบ ให้แนบเครื่องจัดการเหตุการณ์กับ ออบเจ็กต์การตรวจสอบสิทธิ์ ระบบจะเรียกใช้เครื่องจัดการนี้ทุกครั้งที่ผู้ใช้ลงชื่อเข้าใช้ การเปลี่ยนแปลงสถานะ เนื่องจากเครื่องจัดการจะทำงานหลังจากออบเจ็กต์การตรวจสอบสิทธิ์ เริ่มต้นอย่างสมบูรณ์ และหลังจากที่การเรียกเครือข่ายเสร็จสมบูรณ์ ตำแหน่งสำหรับดูข้อมูลเกี่ยวกับผู้ใช้ที่ลงชื่อเข้าใช้
ลงทะเบียนเครื่องจัดการเหตุการณ์โดยใช้ StateChanged
ของออบเจ็กต์ FirebaseAuth
ด้วย เมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ คุณจะได้รับข้อมูลเกี่ยวกับผู้ใช้ดังกล่าว
ในเครื่องจัดการเหตุการณ์
สุดท้าย เมื่อออบเจ็กต์นี้ Destroy
เรียกใช้อยู่ ก็จะเรียกใช้โดยอัตโนมัติ
OnDestroy
ล้างข้อมูลอ้างอิงของออบเจ็กต์การตรวจสอบสิทธิ์ใน OnDestroy
void InitializeFirebase() {
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
if (auth.CurrentUser != user) {
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
&& auth.CurrentUser.IsValid();
if (!signedIn && user != null) {
DebugLog("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn) {
DebugLog("Signed in " + user.UserId);
displayName = user.DisplayName ?? "";
emailAddress = user.Email ?? "";
photoUrl = user.PhotoUrl ?? "";
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
ขั้นตอนถัดไป
ดูวิธีเพิ่มการรองรับผู้ให้บริการข้อมูลประจำตัวรายอื่นๆ และผู้มาเยือนที่ไม่ระบุชื่อ บัญชี: