คุณผสานรวมการตรวจสอบสิทธิ์ Firebase กับระบบการตรวจสอบสิทธิ์ที่กำหนดเองได้โดยแก้ไขเซิร์ฟเวอร์การตรวจสอบสิทธิ์เพื่อสร้างโทเค็นที่มีลายเซ็นแบบกำหนดเองเมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ แอปของคุณได้รับโทเค็นนี้และนำไปใช้ตรวจสอบสิทธิ์กับ Firebase
ก่อนเริ่มต้น
-
ก่อนที่จะใช้การตรวจสอบสิทธิ์ของ Firebase ได้ คุณต้องดำเนินการดังนี้
- ลงทะเบียนโปรเจ็กต์ Unity ด้วยโปรเจ็กต์ Firebase
- เพิ่ม Firebase Unity SDK (โดยเฉพาะ
FirebaseAuth.unitypackage
) ลงในโปรเจ็กต์ Unity
ดูวิธีการโดยละเอียดสำหรับขั้นตอนการตั้งค่าเริ่มต้นเหล่านี้ได้ในเพิ่ม Firebase ในโปรเจ็กต์ Unity
- รับคีย์เซิร์ฟเวอร์ของโปรเจ็กต์โดยทำดังนี้
- ไปที่หน้าบัญชีบริการในการตั้งค่าของโปรเจ็กต์
- คลิกสร้างคีย์ส่วนตัวใหม่ที่ด้านล่างของส่วน Firebase Admin SDK ของหน้าบัญชีบริการ
- ระบบจะบันทึกคู่คีย์สาธารณะ/ส่วนตัวของบัญชีบริการใหม่ลงในคอมพิวเตอร์โดยอัตโนมัติ คัดลอกไฟล์นี้ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์
ตรวจสอบสิทธิ์ด้วย Firebase
คลาสFirebaseAuth
เป็นเกตเวย์สำหรับการเรียก API ทั้งหมด
ซึ่งเข้าถึงได้ผ่าน FirebaseAuth.DefaultInstance
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
เรียกใช้ Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
ด้วยโทเค็นจากเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของคุณ
- เมื่อผู้ใช้ลงชื่อเข้าใช้แอป ให้ส่งข้อมูลเข้าสู่ระบบ (เช่น ชื่อผู้ใช้และรหัสผ่าน) ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ เซิร์ฟเวอร์จะตรวจสอบข้อมูลเข้าสู่ระบบและแสดงผลโทเค็นที่กำหนดเองหากถูกต้อง
- หลังจากได้รับโทเค็นที่กำหนดเองจากเซิร์ฟเวอร์การตรวจสอบสิทธิ์แล้ว ให้ส่งต่อไปยัง
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
เพื่อลงชื่อเข้าใช้ผู้ใช้ ดังนี้auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCustomTokenAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCustomTokenAsync 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); });
ขั้นตอนถัดไป
หลังจากผู้ใช้ลงชื่อเข้าใช้เป็นครั้งแรก ระบบจะสร้างบัญชีผู้ใช้ใหม่และลิงก์กับข้อมูลเข้าสู่ระบบ ซึ่งก็คือชื่อผู้ใช้และรหัสผ่าน หมายเลขโทรศัพท์ หรือข้อมูลของผู้ให้บริการการตรวจสอบสิทธิ์ ซึ่งผู้ใช้ที่ลงชื่อเข้าใช้ด้วย ระบบจะจัดเก็บบัญชีใหม่นี้เป็นส่วนหนึ่งของโปรเจ็กต์ Firebase และสามารถใช้เพื่อระบุผู้ใช้ในทุกแอปในโปรเจ็กต์ได้ ไม่ว่าผู้ใช้จะลงชื่อเข้าใช้ด้วยวิธีใด
-
ในแอป คุณสามารถดูข้อมูลโปรไฟล์พื้นฐานของผู้ใช้จากออบเจ็กต์
Firebase.Auth.FirebaseUser
ได้โดยทำดังนี้Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // The user's Id, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, if you // have one; use User.TokenAsync() instead. string uid = user.UserId; }
ในกฎความปลอดภัยของ Firebase Realtime Database และ Cloud Storage คุณจะรับรหัสผู้ใช้ที่ไม่ซ้ำของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร
auth
ได้ และใช้รหัสดังกล่าวเพื่อควบคุมข้อมูลที่ผู้ใช้เข้าถึงได้
คุณอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปโดยใช้ผู้ให้บริการการตรวจสอบสิทธิ์หลายรายได้โดยลิงก์ข้อมูลเข้าสู่ระบบของผู้ให้บริการการตรวจสอบสิทธิ์กับบัญชีผู้ใช้ที่มีอยู่
หากต้องการนำผู้ใช้ออกจากระบบ โปรดโทรหา
SignOut()
:
auth.SignOut();