คุณสามารถใช้บริการ Google Play Games เพื่อลงชื่อเข้าใช้ผู้เล่นเกม Android ที่สร้างจาก Firebase และ Unity ในการใช้บริการ Google Play Games ลงชื่อเข้าใช้ด้วย Firebase ก่อนอื่นให้ลงชื่อเข้าใช้โปรแกรมเล่นด้วย Google Play Games และขอรหัสตรวจสอบสิทธิ์ OAuth 2.0 เมื่อคุณดำเนินการดังกล่าว จากนั้นส่งรหัสตรวจสอบสิทธิ์ไปที่ PlayGamesAuthProvider
เพื่อสร้างข้อมูลรับรอง Firebase ซึ่งคุณใช้ตรวจสอบสิทธิ์กับ Firebase ได้
ก่อนจะเริ่ม
ตั้งค่าโครงการ Unity ของคุณ
เพิ่มไฟล์กำหนดค่า Firebase และ Firebase Unity SDK ให้กับโปรเจ็กต์ Unity ตามที่อธิบายไว้ใน เพิ่ม Firebase ให้กับโปรเจ็กต์ Unity ทำตามคำแนะนำสำหรับ Android
อย่าลืมนำเข้า
FirebaseAuth.unitypackage
ใน Unity Editor ในส่วนการตั้งค่าบิลด์ > การตั้งค่าผู้เล่น > การตั้งค่าอื่นๆ ให้ตั้งชื่อแพ็คเกจ Android ของเกมของคุณ
จากนั้น ภายใต้ Build Settings > Player Settings > Publishing Settings ให้เลือกหรือสร้างที่เก็บคีย์และคีย์ ซึ่งจะใช้ในการลงนามในแพ็คเกจ 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
:gradlew signingReport
APK ของคุณต้องลงนามด้วยคีย์นี้ รวมทั้งในระหว่างการพัฒนา
เปิดใช้งาน Google Play Games เป็นผู้ให้บริการลงชื่อเข้าใช้:
ค้นหารหัสไคลเอ็นต์เว็บเซิร์ฟเวอร์ของโปรเจ็กต์และข้อมูลลับไคลเอ็นต์ รหัสไคลเอ็นต์ของเว็บเซิร์ฟเวอร์ระบุโปรเจ็กต์ Firebase ของคุณไปยังเซิร์ฟเวอร์การตรวจสอบสิทธิ์ของ Google Play
หากต้องการค้นหาค่าเหล่านี้:
- เปิดโปรเจ็กต์ Firebase ในหน้าข้อมูลรับรอง คอนโซล Google APIs
- ในส่วน รหัสไคลเอ็นต์ OAuth 2.0 ให้เปิดหน้ารายละเอียด เว็บไคลเอ็นต์ (สร้างอัตโนมัติโดยบริการของ Google) หน้านี้แสดงรายการ ID และข้อมูลลับของไคลเอ็นต์เว็บเซิร์ฟเวอร์ของคุณ
จากนั้น ใน คอนโซล Firebase ให้เปิดส่วนการ ตรวจสอบสิทธิ์
บนแท็บ วิธีการลงชื่อเข้า ใช้ ให้เปิดใช้ผู้ให้บริการลงชื่อเข้าใช้ Play Games คุณจะต้องระบุรหัสไคลเอ็นต์เว็บเซิร์ฟเวอร์ของโปรเจ็กต์และข้อมูลลับของไคลเอ็นต์ซึ่งได้รับจากคอนโซล API
กำหนดค่าบริการ Play Games ด้วยข้อมูลแอป Firebase ของคุณ
ใน Google Play Console ให้เปิดแอป Google Play ของคุณหรือสร้างใหม่
ในส่วน เติบโต ให้คลิก บริการ Play Games > การตั้งค่าและการจัดการ > การกำหนดค่า
คลิก ใช่ เกมของฉันใช้ Google API อยู่ แล้ว เลือกโปรเจ็กต์ Firebase ของคุณจากรายการ จากนั้นคลิก ใช้
ในหน้าการกำหนดค่าบริการ Play Games ให้คลิก เพิ่มข้อมูลรับรอง
- เลือกประเภท เซิร์ฟเวอร์เกม
- ในฟิลด์ ไคลเอ็นต์ OAuth ให้เลือกรหัสเว็บไคลเอ็นต์ของโปรเจ็กต์ ตรวจสอบว่ารหัสไคลเอ็นต์นี้เป็นรหัสเดียวกับที่คุณระบุเมื่อเปิดใช้การลงชื่อเข้าใช้ Play Games
- บันทึกการเปลี่ยนแปลงของคุณ
ยังอยู่ในหน้าการกำหนดค่าบริการ Play Games ให้คลิก เพิ่มข้อมูลรับรอง อีกครั้ง
- เลือกประเภท Android
- ในช่อง ไคลเอ็นต์ OAuth ให้เลือกรหัสไคลเอ็นต์ Android ของโปรเจ็กต์ (หากคุณไม่เห็น ID ไคลเอ็นต์ Android ของคุณ ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าลายนิ้วมือ SHA-1 ของเกมในคอนโซล Firebase)
- บันทึกการเปลี่ยนแปลงของคุณ
ในหน้า กิจกรรม ความสำเร็จ และ กระดานผู้นำ ให้สร้างทรัพยากร Play Games ที่คุณต้องการใช้กับเกมของคุณ (หากคุณไม่ต้องการใช้ทันที คุณสามารถสร้างรายการตัวยึดตำแหน่งได้) จากนั้นในหน้า กิจกรรม ความสำเร็จ หรือ กระดานผู้นำ ให้คลิกรับ ทรัพยากร และคัดลอกข้อมูลโค้ดทรัพยากรของ Android ไปที่ใดก็ได้ตามสะดวก คุณจะต้องใช้ข้อมูลโค้ดเพื่อตั้งค่าปลั๊กอินบริการ Google Play Games
ข้อมูลโค้ดทรัพยากรดูเหมือนตัวอย่างต่อไปนี้:
<?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:
- คลิก Window > Google Play Games > Setup > Android Setup เพื่อเปิดหน้าจอการ กำหนดค่า 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 สำเร็จแล้ว ในเครื่องจัดการการลงชื่อเข้าใช้ที่ต่อเนื่อง ให้รับรหัสตรวจสอบสิทธิ์สำหรับบัญชีของผู้เล่น:
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.SignInWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.FirebaseUser newUser = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId); });
ขั้นตอนถัดไป
หลังจากที่ผู้ใช้ลงชื่อเข้าใช้เป็นครั้งแรก บัญชีผู้ใช้ใหม่จะถูกสร้างขึ้นและเชื่อมโยงกับรหัส Play Games ของพวกเขา บัญชีใหม่นี้จัดเก็บเป็นส่วนหนึ่งของโปรเจ็กต์ Firebase และใช้เพื่อระบุผู้ใช้ในทุกแอปในโปรเจ็กต์ของคุณ
ในเกมของคุณ คุณสามารถรับ Firebase UID ของผู้ใช้จากอ็อบเจ็กต์ Firebase.Auth.FirebaseUser
:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
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 Realtime Database และ Cloud Storage Security Rules คุณสามารถรับ ID ผู้ใช้เฉพาะของผู้ใช้ที่ลงชื่อเข้าใช้จากตัวแปร auth
และใช้เพื่อควบคุมข้อมูลที่ผู้ใช้สามารถเข้าถึงได้
หากต้องการรับข้อมูลผู้เล่น Play Games ของผู้ใช้หรือเพื่อเข้าถึงบริการ Play Games ให้ใช้ API ที่ได้รับจากปลั๊กอิน Play Games
หากต้องการออกจากระบบผู้ใช้ โทร SignOut()
:
auth.SignOut();