ตรวจสอบสิทธิ์กับ Firebase โดยใช้ระบบตรวจสอบสิทธิ์ที่กำหนดเองและ Unity

คุณสามารถรวมการรับรองความถูกต้องของ Firebase เข้ากับระบบการตรวจสอบความถูกต้องที่กำหนดเองได้โดยการแก้ไขเซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณเพื่อสร้างโทเค็นที่ลงนามแบบกำหนดเองเมื่อผู้ใช้ลงชื่อเข้าใช้สำเร็จ แอปของคุณจะได้รับโทเค็นนี้และใช้เพื่อตรวจสอบสิทธิ์กับ Firebase

ก่อนที่คุณจะเริ่ม

  1. ก่อนที่คุณจะสามารถใช้ Firebase Authentication คุณต้อง:

    • ลงทะเบียนโปรเจ็กต์ Unity ของคุณกับโปรเจ็กต์ Firebase ของคุณ
    • เพิ่ม Firebase Unity SDK (โดยเฉพาะ FirebaseAuth.unitypackage ) ให้กับโปรเจ็กต์ Unity ของคุณ

    ค้นหาคำแนะนำโดยละเอียดสำหรับขั้นตอนการตั้งค่าเริ่มต้นเหล่านี้ใน เพิ่ม Firebase ให้กับโปรเจ็กต์ Unity ของคุณ

  2. รับรหัสเซิร์ฟเวอร์ของโครงการของคุณ:
    1. ไปที่หน้า บัญชีบริการ ในการตั้งค่าของโปรเจ็กต์
    2. คลิก สร้างคีย์ส่วนตัวใหม่ ที่ด้านล่างของส่วน Firebase Admin SDK ของหน้า บัญชีบริการ
    3. คู่คีย์สาธารณะ/ส่วนตัวของบัญชีบริการใหม่จะถูกบันทึกลงในคอมพิวเตอร์ของคุณโดยอัตโนมัติ คัดลอกไฟล์นี้ไปยังเซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณ

ตรวจสอบสิทธิ์กับ Firebase

คลาส FirebaseAuth เป็นเกตเวย์สำหรับการเรียก API ทั้งหมด สามารถเข้าถึงได้ผ่าน FirebaseAuth.DefaultInstance
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

เรียก Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync ด้วยโทเค็นจากเซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณ

  1. เมื่อผู้ใช้ลงชื่อเข้าใช้แอปของคุณ ให้ส่งข้อมูลรับรองการลงชื่อเข้าใช้ (เช่น ชื่อผู้ใช้และรหัสผ่าน) ไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของคุณ เซิร์ฟเวอร์ของคุณจะตรวจสอบข้อมูลประจำตัวและส่งคืน โทเค็นที่กำหนดเอง หากถูกต้อง
  2. หลังจากที่คุณได้รับโทเค็นแบบกำหนดเองจากเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของคุณแล้ว ให้ส่งต่อไปยัง 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 และ กฎความปลอดภัยของ พื้นที่เก็บข้อมูลบนคลาวด์ คุณสามารถรับ ID ผู้ใช้เฉพาะของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร auth และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้สามารถเข้าถึงได้

คุณสามารถอนุญาตให้ผู้ใช้ลงชื่อเข้าใช้แอปของคุณโดยใช้ผู้ให้บริการตรวจสอบสิทธิ์หลายรายได้โดย การเชื่อมโยงข้อมูลประจำตัวของผู้ให้บริการตรวจสอบสิทธิ์กับบัญชีผู้ใช้ที่มีอยู่

หากต้องการออกจากระบบผู้ใช้ ให้โทร SignOut() :

auth.SignOut();