مصادقة في Unity باستخدام خدمات ألعاب Google Play

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

يمكنك استخدام خدمات ألعاب Google Play لتسجيل دخول اللاعبين إلى إحدى ألعاب Android المبنية على Firebase و Unity. لاستخدام خدمات ألعاب Google Play ، قم بتسجيل الدخول باستخدام Firebase ، قم أولاً بتسجيل الدخول إلى المشغل باستخدام ألعاب Google Play ، واطلب رمز مصادقة OAuth 2.0 عند القيام بذلك. بعد ذلك ، قم بتمرير رمز المصادقة إلى PlayGamesAuthProvider لإنشاء بيانات اعتماد Firebase ، والتي يمكنك استخدامها للمصادقة مع Firebase.

قبل ان تبدأ

قم بإعداد مشروع الوحدة الخاص بك

  1. أضف ملف تكوين Firebase و Firebase Unity SDK إلى مشروع Unity الخاص بك كما هو موضح في إضافة Firebase إلى مشروع الوحدة الخاص بك . اتبع التعليمات الخاصة بنظام Android.

    تأكد من استيراد FirebaseAuth.unitypackage .

  2. في Unity Editor ، ضمن Build Settings> Player Settings> Other Settings ، قم بتعيين اسم حزمة Android للعبتك.

  3. بعد ذلك ، ضمن إعدادات البناء> إعدادات المشغل> إعدادات النشر ، حدد أو أنشئ ملف تخزين مفاتيح ومفتاح ، والذي سيتم استخدامه لتوقيع حزمة Android. يجب أن يكون ملف APK موقّعًا حتى يعمل تسجيل الدخول إلى "ألعاب Play" - لا يسري هذا المطلب فقط على النشر ، ولكن أيضًا أثناء تطوير لعبتك.

قم بإعداد مشروع Firebase الخاص بك

  1. في وحدة تحكم Firebase ، انتقل إلى مشروع Firebase الذي سجلت فيه مشروع الوحدة الخاص بك.

  2. عيّن بصمة إصبع SHA-1 للعبتك من صفحة الإعدادات في وحدة تحكم Firebase ، باستخدام المفتاح الذي عينته في الوحدة.

    يمكنك الحصول على بصمة SHA-1 keytool أمر أداة المفاتيح:

    keytool -exportcert -list -v \
        -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE

    بدلاً من ذلك ، يمكنك الحصول على تجزئة SHA لشهادة التوقيع الخاصة بك باستخدام أمر signingReport :

    gradlew signingReport

    يجب توقيع ملف APK الخاص بك باستخدام هذا المفتاح ، بما في ذلك أثناء التطوير.

  3. قم بتمكين ألعاب Google Play كموفر لتسجيل الدخول:

    1. ابحث عن معرّف عميل خادم الويب الخاص بمشروعك وسر العميل. يحدد معرّف عميل خادم الويب مشروع Firebase لخوادم مصادقة Google Play.

      للعثور على هذه القيم:

      1. افتح مشروع Firebase في صفحة بيانات اعتماد وحدة تحكم Google APIs .
      2. في قسم معرّفات عميل OAuth 2.0 ، افتح صفحة تفاصيل عميل الويب (الذي تم إنشاؤه تلقائيًا بواسطة خدمة Google) . تسرد هذه الصفحة معرف عميل خادم الويب والسر.
    2. بعد ذلك ، في وحدة تحكم Firebase ، افتح قسم المصادقة .

    3. في علامة تبويب طريقة تسجيل الدخول ، قم بتمكين موفر تسجيل الدخول إلى ألعاب Play . ستحتاج إلى تحديد معرف عميل خادم الويب الخاص بمشروعك وسر العميل ، والذي حصلت عليه من وحدة تحكم واجهات برمجة التطبيقات.

هيئ خدمات ألعاب Play باستخدام معلومات تطبيق Firebase

  1. في Google Play Console ، افتح تطبيق Google Play أو أنشئ واحدًا.

  2. في قسم Grow ، انقر فوق خدمات ألعاب Play> الإعداد والإدارة> التكوين .

  3. انقر فوق نعم ، لعبتي تستخدم Google APIs بالفعل ، وحدد مشروع Firebase الخاص بك من القائمة ، ثم انقر فوق استخدام .

  4. في صفحة تكوين خدمات ألعاب Play ، انقر على إضافة بيانات الاعتماد .

    1. حدد نوع خادم اللعبة .
    2. في حقل عميل OAuth ، حدد معرّف عميل الويب لمشروعك. تأكد من أن هذا هو نفس معرّف العميل الذي حددته عند تمكين تسجيل الدخول إلى ألعاب Play.
    3. احفظ التغييرات.
  5. لا يزال في صفحة تكوين خدمات ألعاب Play ، انقر فوق إضافة بيانات الاعتماد مرة أخرى.

    1. حدد نوع Android .
    2. في حقل عميل OAuth ، حدد معرّف عميل Android الخاص بمشروعك. (إذا كنت لا ترى معرّف عميل Android ، فتأكد من تعيين بصمة SHA-1 للعبة في وحدة تحكم Firebase.)
    3. احفظ التغييرات.
  6. في صفحات الأحداث والإنجازات ولوحات المتصدرين ، أنشئ أي موارد ألعاب Play تريد استخدامها مع لعبتك (إذا كنت لا تريد استخدام أي منها على الفور ، يمكنك إنشاء إدخال عنصر نائب). بعد ذلك ، في أي من صفحات الأحداث أو الإنجازات أو قوائم المتصدرين ، انقر فوق الحصول على الموارد وانسخ مقتطف موارد Android في مكان مناسب. ستحتاج إلى المقتطف لإعداد المكون الإضافي لخدمات ألعاب Google Play.

    يبدو مقتطف الموارد مشابهًا للمثال التالي:

    <?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>
    
  7. في صفحة المختبرين ، أضف عناوين البريد الإلكتروني لأي مستخدم يحتاج إلى أن يكون قادرًا على تسجيل الدخول إلى لعبتك قبل إصدارها في متجر Play.

ادمج تسجيل الدخول إلى "ألعاب Play" في لعبتك

  1. قم بتنزيل أحدث إصدار من المكوّن الإضافي Play Games لـ Unity واستخرجه.

  2. قم باستيراد حزمة Unity الخاصة بالملحق في مشروع Unity الخاص بك. يمكنك العثور على حزمة الوحدة في دليل current-build لأرشيف الإصدار.

  3. قم بإعداد المكوِّن الإضافي لألعاب Play:

    1. انقر فوق Window> Google Play Games> Setup> Android Setup لفتح شاشة تكوين Android .
    2. الصق مقتطف موارد Android الذي حصلت عليه من Play Console في حقل تعريف الموارد .
    3. الصق معرّف عميل خادم الويب ، الذي قدمته عند تمكين تسجيل الدخول إلى Play Games في وحدة تحكم Firebase ، في حقل معرّف العميل .
    4. انقر فوق إعداد .
  4. في لعبتك ، هيئ عميل ألعاب 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();
    
  5. بعد ذلك ، عندما يختار أحد اللاعبين تسجيل الدخول باستخدام "ألعاب Play" ، اتصل Social.localUser.Authenticate() :

    Social.localUser.Authenticate((bool success) => {
      // handle success or failure
    });
    

المصادقة باستخدام Firebase

بعد إضافة تسجيل الدخول إلى "ألعاب Play" إلى لعبتك ، يمكنك استخدام رمز المصادقة من خدمات "ألعاب Play" للمصادقة باستخدام Firebase.

  1. بعد أن ينجح اللاعب في تسجيل الدخول باستخدام ألعاب Play ، في معالج متابعة تسجيل الدخول ، احصل على رمز مصادقة لحساب اللاعب:

    Social.localUser.Authenticate((bool success) => {
      if (success) {
        authCode = PlayGamesPlatform.Instance.GetServerAuthCode();
      }
    });
    
  2. بعد ذلك ، استبدل رمز المصادقة من خدمات ألعاب Play ببيانات اعتماد 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 الخاص به. يتم تخزين هذا الحساب الجديد كجزء من مشروع 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 وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

للحصول على معلومات لاعب Play Games الخاص بالمستخدم أو للوصول إلى خدمات ألعاب Play ، استخدم واجهات برمجة التطبيقات التي يوفرها المكون الإضافي لـ Play Games.

لتسجيل خروج مستخدم ، اتصل SignOut() :

auth.SignOut();