ตรวจสอบสิทธิ์โดยใช้ Yahoo และ Unity

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

ก่อนเริ่มต้น

ก่อนที่จะใช้งานได้ Firebase Authentication คุณต้องทำดังนี้

  • ลงทะเบียนโปรเจ็กต์ Unity และกำหนดค่าให้ใช้ Firebase

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

    • หากไม่มีโปรเจ็กต์ Unity คุณสามารถดาวน์โหลด ตัวอย่างแอป

  • เพิ่ม Firebase Unity SDK (โดยเฉพาะ FirebaseAuth.unitypackage) ไปยัง โปรเจ็กต์ Unity

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

เข้าถึงชั้นเรียน Firebase.Auth.FirebaseAuth

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

จัดการขั้นตอนการลงชื่อเข้าใช้ด้วย Firebase SDK

หากต้องการจัดการขั้นตอนการลงชื่อเข้าใช้ด้วย Firebase SDK ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างอินสแตนซ์ของ FederatedOAuthProviderData ที่กำหนดค่าด้วย รหัสผู้ให้บริการที่เหมาะกับ Yahoo!

    Firebase.Auth.FederatedOAuthProviderData providerData =
      new Firebase.Auth.FederatedOAuthProviderData();
    providerData.ProviderId = Firebase.Auth.YahooAuthProvider.ProviderId;
    
  2. ไม่บังคับ: ระบุพารามิเตอร์ OAuth ที่กำหนดเองเพิ่มเติมที่ต้องการ ส่งด้วยคำขอ OAuth

    providerData.CustomParameters = new Dictionary<string,string>;
    
    // Prompt user to re-authenticate to Yahoo.
    providerData.CustomParameters.Add("prompt", "login");
    
    // Localize to French.
    providerData.CustomParameters.Add("language", "fr");
    

    สำหรับพารามิเตอร์ที่ Yahoo รองรับ โปรดดูที่ เอกสาร OAuth ของ Yahoo โปรดทราบว่าคุณไม่สามารถส่งพารามิเตอร์ที่จําเป็นของ Firebase ด้วย custom_parameters() พารามิเตอร์เหล่านี้คือ client_id redirect_uri, response_type, scope และ state

  3. ไม่บังคับ: ระบุขอบเขต OAuth 2.0 เพิ่มเติมนอกเหนือจาก profile และ email ที่ต้องการขอจากผู้ให้บริการตรวจสอบสิทธิ์ หาก แอปพลิเคชันต้องการเข้าถึงข้อมูลส่วนตัวของผู้ใช้จาก Yahoo APIs คุณจะ ต้องขอสิทธิ์ไปยัง Yahoo APIs ในสิทธิ์ API ใน Yahoo Developer Console ขอบเขต OAuth ที่ขอต้องตรงกันทุกประการกับ รายการที่กำหนดไว้ล่วงหน้าในสิทธิ์ API ของแอป เช่น หากอ่าน/เขียน มีการขอสิทธิ์เข้าถึงรายชื่อติดต่อของผู้ใช้และกำหนดค่าล่วงหน้าใน API ของแอป ต้องส่งผ่าน sdct-w แทนขอบเขต OAuth แบบอ่านอย่างเดียว sdct-r มิฉะนั้น ขั้นตอนนี้จะล้มเหลวและเกิดข้อผิดพลาด ผู้ใช้ปลายทาง

    providerData.Scopes = new List<string>();
    
    // Request access to Yahoo Mail API.
    providerData.Scopes.Add("mail-r");
    // This must be preconfigured in the app's API permissions.
    providerData.Scopes.Add("sdct-w");
    

    ดูข้อมูลเพิ่มเติมได้ที่ เอกสารประกอบเกี่ยวกับขอบเขต Yahoo

  4. เมื่อกำหนดค่าข้อมูลผู้ให้บริการแล้ว ให้ใช้ข้อมูลเพื่อสร้าง FederatedOAuthProvider

    // Construct a FederatedOAuthProvider for use in Auth methods.
    Firebase.Auth.FederatedOAuthProvider provider =
        new Firebase.Auth.FederatedOAuthProvider();
    provider.SetProviderData(providerData);
    
  5. ตรวจสอบสิทธิ์กับ Firebase โดยใช้ออบเจ็กต์ผู้ให้บริการการตรวจสอบสิทธิ์ โปรดทราบว่าสิ่งที่ การดำเนินการ FirebaseAuth อื่นๆ ขั้นตอนนี้จะควบคุม UI ของคุณด้วยการ เป็นมุมมองเว็บที่ผู้ใช้สามารถป้อนข้อมูลเข้าสู่ระบบได้

    หากต้องการเริ่มขั้นตอนการลงชื่อเข้าใช้ โปรดโทรหา SignInAndRetrieveDataWithCredentialAsync

<<../_Include/_sign_in_with_provider_unity.md>>>

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

    user.LinkWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("LinkWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError("LinkWithProviderAsync encountered an error: "
              + task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User linked successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    
  2. รูปแบบเดียวกันนี้สามารถใช้กับ ReauthenticateWithProviderAsync ที่ สามารถใช้เพื่อดึงข้อมูลเข้าสู่ระบบใหม่สำหรับการดำเนินการที่มีความละเอียดอ่อน ซึ่ง ต้องมีการเข้าสู่ระบบล่าสุด

    user.ReauthenticateWithProviderAsync(provider).ContinueOnMainThread(task => {
        if (task.IsCanceled) {
            Debug.LogError("ReauthenticateWithProviderAsync was canceled.");
            return;
        }
        if (task.IsFaulted) {
            Debug.LogError(
            "ReauthenticateWithProviderAsync encountered an error: " +
                task.Exception);
            return;
        }
    
        Firebase.Auth.AuthResult authResult = task.Result;
        Firebase.Auth.FirebaseUser user = authResult.User;
        Debug.LogFormat("User reauthenticated successfully: {0} ({1})",
            user.DisplayName, user.UserId);
    });
    

ซึ่งต่างจากผู้ให้บริการ OAuth รายอื่นๆ ที่ Firebase รองรับ เช่น Google, Facebook และ Twitter ซึ่งสามารถลงชื่อเข้าใช้ด้วยโทเค็นเพื่อการเข้าถึง OAuth ได้โดยตรง ตามข้อมูลเข้าสู่ระบบ Firebase Auth ไม่สนับสนุนความสามารถเดียวกันนี้สำหรับ ของผู้ให้บริการอย่าง Yahoo เนื่องจากไม่สามารถ เซิร์ฟเวอร์การตรวจสอบสิทธิ์เพื่อยืนยันกลุ่มเป้าหมายของโทเค็นเพื่อการเข้าถึงของ Yahoo OAuth ซึ่งเป็นข้อกำหนดด้านความปลอดภัยที่สำคัญมาก และอาจทำให้แอปพลิเคชัน เพื่อแสดงการโจมตีซ้ำซึ่งได้รับโทเค็นเพื่อการเข้าถึง Yahoo OAuth สำหรับ โปรเจ็กต์หนึ่ง (ผู้โจมตี) สามารถใช้เพื่อลงชื่อเข้าใช้โปรเจ็กต์อื่น (เหยื่อ) ได้ แต่ Firebase Auth ให้คุณจัดการขั้นตอน OAuth ทั้งหมดและ การแลกเปลี่ยนรหัสการให้สิทธิ์โดยใช้รหัสไคลเอ็นต์และข้อมูลลับของ OAuth ซึ่งกำหนดค่าไว้ในคอนโซล Firebase เนื่องจากรหัสการให้สิทธิ์สามารถใช้ได้เฉพาะ ร่วมกับรหัสไคลเอ็นต์/ข้อมูลลับเฉพาะ ซึ่งก็คือรหัสการให้สิทธิ์ ที่ได้รับสำหรับโครงการหนึ่ง จะไม่สามารถนำไปใช้กับอีกโครงการหนึ่งได้

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

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

หลังจากผู้ใช้ลงชื่อเข้าใช้เป็นครั้งแรก ระบบจะสร้างบัญชีผู้ใช้ใหม่ และ ซึ่งก็คือชื่อผู้ใช้และรหัสผ่าน โทรศัพท์ หมายเลข หรือข้อมูลของผู้ให้บริการตรวจสอบสิทธิ์ ซึ่งก็คือผู้ใช้ที่ลงชื่อเข้าใช้ ใหม่นี้ จัดเก็บเป็นส่วนหนึ่งของโปรเจ็กต์ 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();

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

อัปเดตแล้ว Feb 28, 2025

Firebase gives you the tools and infrastructure you need to build better mobile and web apps, improve app quality, and grow your business.

อัปเดตแล้ว Feb 28, 2025