คุณใช้บริการเกมของ Google Play เพื่อลงชื่อเข้าใช้เกม Android ให้ผู้เล่นได้
ซึ่งสร้างจาก Firebase และ Unity ลงชื่อเข้าใช้ด้วยบริการเกมของ Google Play
Firebase ให้ลงชื่อเข้าใช้โปรแกรมเล่นด้วย Google Play Games ก่อน แล้วขอ
ด้วยรหัสการตรวจสอบสิทธิ์ OAuth 2.0 จากนั้นส่งรหัสการตรวจสอบสิทธิ์ไปยัง
PlayGamesAuthProvider
เพื่อสร้างข้อมูลเข้าสู่ระบบ Firebase ซึ่งคุณใช้เพื่อ
ตรวจสอบสิทธิ์ด้วย Firebase แล้ว
ก่อนเริ่มต้น
ตั้งค่าโปรเจ็กต์ Unity
เพิ่มไฟล์การกำหนดค่า Firebase และ SDK Firebase Unity ลงในโปรเจ็กต์ Unity ตามที่อธิบายไว้ใน เพิ่ม Firebase ลงในโปรเจ็กต์ Unity ทำตามวิธีการสำหรับ Android
ตรวจสอบว่าได้นำเข้า
FirebaseAuth.unitypackage
แล้วในเครื่องมือแก้ไข Unity ใต้การตั้งค่าบิลด์ > การตั้งค่าโปรแกรมเล่น > อื่นๆ การตั้งค่า ตั้งชื่อแพ็กเกจ Android ของเกม
จากนั้น ภายใต้ การตั้งค่าบิลด์ > การตั้งค่าโปรแกรมเล่น > การตั้งค่าการเผยแพร่ เลือกหรือสร้างคีย์สโตร์และคีย์ ซึ่งจะใช้ในการรับรอง Android ของคุณ ใหม่ APK ของคุณต้องได้รับการลงนามสำหรับการลงชื่อเข้าใช้ Play Games จึงจะใช้งานได้ ข้อกำหนดนี้ไม่ได้ใช้กับการเผยแพร่เท่านั้น แต่รวมถึงระหว่างการพัฒนา เกมของคุณ
สร้างโปรเจ็กต์ Firebase
ในคอนโซล Firebase ให้ไปที่โปรเจ็กต์ Firebase ที่คุณลงทะเบียนโปรเจ็กต์ Unity
ตั้งค่าลายนิ้วมือ SHA-1 ของเกมจาก หน้าการตั้งค่า ของคอนโซล Firebase โดยใช้คีย์ที่คุณตั้งค่าไว้ใน Unity
คุณใช้ลายนิ้วมือ SHA-1 ของคีย์ได้ด้วยคำสั่ง
keytool
ดังนี้keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
หรือรับแฮช SHA ของใบรับรองที่ลงนามด้วย คำสั่ง
signingReport
ของ Gradle:gradlew signingReport
APK ของคุณต้องรับรองด้วยคีย์นี้ รวมถึงระหว่างการพัฒนา
เปิดใช้ Google Play Games เป็นผู้ให้บริการการลงชื่อเข้าใช้:
ในคอนโซล Firebase ให้เปิด ส่วน Authentication
สร้างและรับรหัสไคลเอ็นต์และไคลเอ็นต์สำหรับเว็บเซิร์ฟเวอร์ของโปรเจ็กต์ ความลับ:
ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้การลงชื่อเข้าใช้ Google
คัดลอกรหัสไคลเอ็นต์และข้อมูลลับของเว็บเซิร์ฟเวอร์จากการลงชื่อเข้าใช้ Google
ในแท็บวิธีการลงชื่อเข้าใช้ ให้เปิดใช้ Play Games ผู้ให้บริการการลงชื่อเข้าใช้ และระบุรหัสไคลเอ็นต์สำหรับเว็บเซิร์ฟเวอร์ของโปรเจ็กต์และ Client Secret ที่คุณได้รับในขั้นตอนสุดท้าย
กำหนดค่า Play Games services ด้วยข้อมูลแอป Firebase ของคุณ
ใน คอนโซล Google Play, เปิดแอป Google Play หรือสร้างแอป
ในส่วนขยาย ให้คลิก Play Games services การตั้งค่าและ การจัดการ > การกำหนดค่า
คลิกใช่ เกมของฉันใช้ Google APIs อยู่แล้ว เลือก Firebase จากรายการ แล้วคลิกใช้
ในหน้าการกำหนดค่าของ Play Games services ให้คลิก เพิ่มข้อมูลเข้าสู่ระบบ
- เลือกประเภทเซิร์ฟเวอร์เกม
- เลือกรหัสไคลเอ็นต์ของเว็บของโปรเจ็กต์ในช่องไคลเอ็นต์ OAuth เป็น ตรวจสอบว่าเป็นรหัสไคลเอ็นต์ที่คุณระบุไว้เมื่อเปิดใช้ กำลังลงชื่อเข้าใช้ Play Games
- บันทึกการเปลี่ยนแปลง
ขณะยังอยู่ในหน้าการกำหนดค่า Play Games services ให้คลิก เพิ่มข้อมูลเข้าสู่ระบบอีกครั้ง
- เลือกประเภท Android
- ในช่องไคลเอ็นต์ OAuth ให้เลือกรหัสไคลเอ็นต์ Android ของโปรเจ็กต์ (ถ้าคุณไม่เห็นรหัสไคลเอ็นต์ของ Android ให้ตรวจสอบว่าได้ตั้งค่ารหัสของเกม ลายนิ้วมือ SHA-1 ในคอนโซล Firebase)
- บันทึกการเปลี่ยนแปลง
ในหน้าเหตุการณ์ รางวัลพิเศษ และลีดเดอร์บอร์ด ให้สร้าง แหล่งข้อมูล Play Games รายการที่ต้องการใช้กับเกม (หากคุณไม่ได้ทำ หากต้องการใช้ทันที คุณสามารถสร้างรายการตัวยึดตำแหน่งได้) จากนั้น เปิด ของหน้าเหตุการณ์ รางวัลพิเศษ หรือลีดเดอร์บอร์ด ให้คลิก ดูแหล่งข้อมูล แล้วคัดลอกข้อมูลโค้ดทรัพยากรของ Android ไว้ที่อื่น เพื่อความสะดวก คุณจะต้องใช้ข้อมูลโค้ดเพื่อตั้งค่า Google Play Games services ปลั๊กอิน
ข้อมูลโค้ดทรัพยากรมีลักษณะเหมือนตัวอย่างต่อไปนี้
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources> <!-- app_id --> <string name="app_id" translatable="false">123456789000</string> <!-- package_name --> <string name="package_name" translatable="false">com.example.game</string> <!-- event Wiped Raid --> <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string> </resources>
ในหน้าผู้ทดสอบ ให้เพิ่มอีเมลของผู้ใช้ที่ต้องการ สามารถลงชื่อเข้าใช้เกมของคุณได้ก่อนที่จะเผยแพร่ใน Play Store
ผสานรวมการลงชื่อเข้าใช้ Play Games เข้ากับเกมของคุณ
ดาวน์โหลดเวอร์ชันล่าสุดของ ปลั๊กอิน Play Games สำหรับ Unity และแตกข้อมูลออกมา
นำเข้าแพ็กเกจ Unity ของปลั๊กอินไปยังโปรเจ็กต์ Unity คุณสามารถค้นหา แพ็กเกจ Unity ในไดเรกทอรี
current-build
ของที่เก็บถาวรสำหรับรุ่นตั้งค่าปลั๊กอิน Play Games ดังนี้
- คลิกหน้าต่าง > Google Play Games > ตั้งค่า > การตั้งค่า Android เพื่อเปิด หน้าจอการกำหนดค่า Android
- วางข้อมูลโค้ดทรัพยากร Android ที่คุณได้จาก Play Console ลงใน ช่องคำจำกัดความของทรัพยากร
- วางรหัสไคลเอ็นต์ของเว็บเซิร์ฟเวอร์ที่คุณให้ไว้เมื่อเปิดใช้ ลงชื่อเข้าใช้ Play Games ในคอนโซล Firebase ด้วยรหัสไคลเอ็นต์ ด้วย
- คลิกตั้งค่า
ในเกม ให้กำหนดค่าไคลเอ็นต์ Play Games ด้วย
RequestServerAuthCode
เปิดใช้การตั้งค่าแล้ว:using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; using System.Threading.Tasks; PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .RequestServerAuthCode(false /* Don't force refresh */) .Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate();
จากนั้นเมื่อผู้เล่นเลือกที่จะลงชื่อเข้าใช้ด้วย Play Games ให้เรียกใช้
Social.localUser.Authenticate()
:Social.localUser.Authenticate((bool success) => { // handle success or failure });
ตรวจสอบสิทธิ์ด้วย Firebase
หลังจากเพิ่มการลงชื่อเข้าใช้ Play Games ลงในเกม คุณจะใช้รหัสการให้สิทธิ์จาก บริการ Play Games สำหรับตรวจสอบสิทธิ์กับ Firebase
หลังจากที่ผู้เล่นลงชื่อเข้าใช้ด้วย Play Games สำเร็จแล้ว Continuation Handler รับรหัสการให้สิทธิ์สำหรับบัญชีของผู้เล่น
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
จากนั้น แลกเปลี่ยนรหัสการตรวจสอบสิทธิ์จากบริการ Play Games สำหรับ Firebase และใช้ข้อมูลรับรอง Firebase ในการตรวจสอบสิทธิ์โปรแกรมเล่น โดยทำดังนี้
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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); });
ขั้นตอนถัดไป
หลังจากผู้ใช้ลงชื่อเข้าใช้เป็นครั้งแรก ระบบจะสร้างบัญชีผู้ใช้ใหม่ และ ลิงก์กับรหัส Play Games ของตน บัญชีใหม่นี้จัดเก็บไว้เป็นส่วนหนึ่งของ Firebase ซึ่งสามารถใช้เพื่อระบุผู้ใช้ในทุกแอปในบัญชีของคุณ
ในเกม คุณสามารถดู Firebase UID ของผู้ใช้ได้จาก
ออบเจ็กต์ Firebase.Auth.FirebaseUser
รายการ:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
string playerName = user.DisplayName;
// 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 และกฎความปลอดภัยของ Cloud Storage คุณจะได้รับ
รหัสผู้ใช้ที่ไม่ซ้ำกันของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร auth
และใช้เพื่อ
ควบคุมข้อมูลที่ผู้ใช้เข้าถึงได้
หากต้องการรับข้อมูลผู้เล่น Play Games ของผู้ใช้หรือการเข้าถึงบริการเกมของ Play ใช้ API จากปลั๊กอิน Play เกม
หากต้องการนำผู้ใช้ออกจากระบบ โปรดโทรหา SignOut()
auth.SignOut();