يمكنك استخدام "خدمات ألعاب Google Play" لتسجيل دخول اللاعبين إلى لعبة Android تم إنشاؤها باستخدام Firebase وUnity. لاستخدام خدمات ألعاب Google Play لتسجيل الدخول باستخدام Firebase، عليك أولاً تسجيل دخول اللاعب باستخدام ألعاب Google Play، وطلب رمز التفويض OAuth 2.0 عند إجراء ذلك. بعد ذلك، مرِّر رمز التفويض إلى PlayGamesAuthProvider لإنشاء بيانات اعتماد Firebase، والتي يمكنك استخدامها للمصادقة باستخدام Firebase.
قبل البدء
إعداد مشروع Unity
أضِف ملف إعدادات Firebase وحزمة تطوير البرامج (SDK) Firebase Unity إلى مشروع Unity الخاص بك كما هو موضّح في مقالة إضافة Firebase إلى مشروع Unity. اتّبِع التعليمات الخاصة بأجهزة Android.
احرص على استيراد
FirebaseAuth.unitypackage.في Unity Editor، ضِمن إعدادات الإصدار > إعدادات المشغّل > إعدادات أخرى، اضبط اسم حزمة Android للعبتك.
بعد ذلك، ضمن إعدادات الإنشاء > إعدادات المشغّل > إعدادات النشر، اختَر أو أنشئ ملف تخزين مفاتيح ومفتاحًا سيتم استخدامهما لتوقيع حزمة Android. يجب توقيع حِزمة APK لكي تعمل ميزة تسجيل الدخول في "ألعاب Play"، وينطبق هذا الشرط على النشر وأيضًا أثناء تطوير لعبتك.
إعداد مشروع Firebase
في وحدة تحكّم Firebase، انتقِل إلى مشروع Firebase الذي سجّلت فيه مشروع Unity.
حدِّد الملف المرجعي لشهادة SHA-1 الخاصة باللعبة.
في وحدة تحكّم Firebase، انتقِل إلى علامة التبويب
الإعدادات > الإعدادات العامة.انتقِل للأسفل إلى بطاقة تطبيقاتك، واختَر تطبيق Android، وأضِف بصمة SHA-1 في حقل الملفات المرجعية لشهادة SHA.
يمكنك الحصول على بصمة SHA-1 لمفتاحك باستخدام الأمر
keytool:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTOREبدلاً من ذلك، يمكنك الحصول على قيمة تجزئة SHA لشهادة التوقيع باستخدام الأمر gradle
signingReport:gradlew signingReport
راجِع مصادقة العميل للحصول على تفاصيل حول كيفية الحصول على الملف المرجعي SHA لتطبيقك.
يجب توقيع حزمة APK باستخدام هذا المفتاح، بما في ذلك أثناء عملية التطوير.
فعِّل Google Play Games كموفّر لتسجيل الدخول:
في وحدة تحكّم Firebase، انتقِل إلى الأمان > المصادقة.
أنشئ معرّف عميل وخادم ويب ورمزًا سريًا للعميل في مشروعك واحصل عليهما:
في علامة التبويب طريقة تسجيل الدخول، فعِّل مقدّم خدمة تسجيل الدخول Google.
انسخ معرّف العميل وسرّه من موفّر خدمة تسجيل الدخول Google.
في علامة التبويب طريقة تسجيل الدخول، فعِّل موفِّر تسجيل الدخول Play Games، وحدِّد معرّف العميل وسر العميل لخادم الويب الخاص بمشروعك، اللذين حصلت عليهما في الخطوة الأخيرة.
ضبط Play Games services باستخدام معلومات تطبيق Firebase الخاص بك
في Google Play Console، افتح تطبيق 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" في لعبتك
نزِّل أحدث إصدار من المكوّن الإضافي "ألعاب Play" لمحرّك Unity واستخرِجه.
استورِد حزمة Unity الخاصة بالمكوّن الإضافي إلى مشروع Unity. يمكنك العثور على حزمة Unity في دليل
current-buildلأرشيف الإصدار.إعداد إضافة "ألعاب Play":
- انقر على Window > ألعاب Google Play > Setup > Android Setup لفتح شاشة إعداد Android.
- الصِق مقتطف موارد Android الذي حصلت عليه من Play Console في حقل تعريف الموارد.
- الصِق معرّف العميل الخاص بخادم الويب الذي قدّمته عند تفعيل ميزة "تسجيل الدخول إلى ألعاب Play" في Firebase console، وذلك في حقل معرّف العميل.
- انقر على إعداد.
في لعبتك، اضبط إعدادات تطبيق "ألعاب Play" مع تفعيل الإعداد
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"، استدعِ الدالة
Social.localUser.Authenticate():Social.localUser.Authenticate((bool success) => { // handle success or failure });
المصادقة باستخدام Firebase
بعد إضافة ميزة "تسجيل الدخول باستخدام خدمات ألعاب Play" إلى لعبتك، يمكنك استخدام رمز التفويض من خدمات ألعاب Play للمصادقة باستخدام Firebase.
بعد أن يسجّل اللاعب الدخول بنجاح باستخدام "ألعاب Play"، احصل على رمز تفويض لحساب اللاعب في معالج استئناف تسجيل الدخول:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });بعد ذلك، استبدِل رمز التفويض من "خدمات ألعاب Play" ببيانات اعتماد 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". يتم تخزين هذا الحساب الجديد كجزء من مشروعك على Firebase، ويمكن استخدامه لتحديد هوية المستخدم على مستوى كل تطبيق في مشروعك.
في لعبتك، يمكنك الحصول على معرّف UID الخاص بالمستخدم على Firebase من العنصر 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" أو للوصول إلى خدمات "ألعاب Play"، استخدِم واجهات برمجة التطبيقات التي يوفّرها مكوّن "ألعاب Play" الإضافي.
لتسجيل خروج مستخدم، اتّبِع الخطوات التاليةSignOut():
auth.SignOut();