เริ่มต้นใช้งานการตรวจสอบสิทธิ์ Firebase ใน Unity

คุณสามารถใช้การตรวจสอบสิทธิ์ 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;
}

ขั้นตอนถัดไป

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