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

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

قبل ان تبدأ

قم بإعداد الوحدة

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

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

  2. في محرر الوحدة، تحت إعدادات إنشاء> إعدادات لاعب> إعدادات أخرى حددت اسم الحزمة الروبوت من اللعبة.

  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 شهادة للتوقيع مع gradle signingReport الأوامر:

    gradlew signingReport

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

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

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

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

      1. فتح مشروع Firebase الخاصة بك في وحدة التحكم جوجل واجهات برمجة التطبيقات صفحة بيانات الاعتماد.
      2. في قسم أوث 2.0 معرفات العميل، فتح عميل ويب (السيارات التي تم إنشاؤها بواسطة خدمة جوجل) تفاصيل الصفحة. تسرد هذه الصفحة معرف عميل خادم الويب والسر.
    2. ثم، في وحدة التحكم Firebase ، فتح الباب المصادقة.

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

  1. في وحدة التحكم في Google Play ، افتح التطبيق الخاص بك أو إنشاء واحد.

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

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

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

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

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

  1. تحميل الإصدار الأخير من ألعاب اللعب المساعد من أجل الوحدة واستخراجها.

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

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

    1. انقر فوق إطار> جوجل لعب ألعاب> إعداد> إعداد الروبوت لفتح شاشة تكوين الروبوت.
    2. لصق الموارد الروبوت مقتطفة الذي حصلت عليه من وحدة التحكم اللعب في حقل تعريف الموارد.
    3. لصق ID العميل خادم الويب الخاص بك، والتي قدمت عند تمكين ألعابا تسجيل الدخول في وحدة تحكم Firebase، في حقل معرف العميل.
    4. انقر فوق إعداد.
  4. في اللعبة، تكوين عميل تشغيل الألعاب مع 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. ثم، عندما يختار لاعب لتسجيل الدخول مع ألعاب اللعب، وندعو 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 الحقيقي والكلمة الدلالية ضوابط الأمن التخزين، يمكنك الحصول على قعت في هوية المستخدم الفريد المستخدم من auth متغير، واستخدامها للسيطرة على ما هي البيانات على وصول ويمكن للمستخدم.

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

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

auth.SignOut();