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