คุณสามารถใช้ Firebase Authentication เพื่ออนุญาตให้ผู้ใช้ลงชื่อเข้าใช้เกมของคุณโดยใช้วิธีการลงชื่อเข้าใช้ตั้งแต่หนึ่งวิธีขึ้นไป รวมถึงการลงชื่อเข้าใช้ด้วยที่อยู่อีเมลและรหัสผ่าน และผู้ให้บริการข้อมูลประจำตัวแบบรวมศูนย์ เช่น Google Sign-in และ Facebook Login บทช่วยสอนนี้ช่วยให้คุณเริ่มต้นใช้งาน 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
โดยอัตโนมัติ ล้างการอ้างอิงวัตถุ Auth ใน 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;
}
ขั้นตอนถัดไป
เรียนรู้วิธีเพิ่มการสนับสนุนสำหรับผู้ให้บริการข้อมูลประจำตัวรายอื่นและบัญชีแขกที่ไม่ระบุตัวตน: