Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

المصادقة باستخدام Game Center

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

يمكنك استخدام Game Center لتسجيل دخول اللاعبين إلى إحدى ألعاب منصات Apple المبنية على Firebase. لاستخدام تسجيل الدخول إلى Game Center مع Firebase ، تأكد أولاً من تسجيل دخول اللاعب المحلي باستخدام Game Center ، ثم استخدم كائن GameCenterAuthProvider لإنشاء بيانات اعتماد Firebase ، والتي يمكنك استخدامها للمصادقة باستخدام Firebase.

قبل ان تبدأ

استخدم Swift Package Manager لتثبيت وإدارة تبعيات Firebase.

  1. في Xcode ، مع فتح مشروع التطبيق الخاص بك ، انتقل إلى ملف> إضافة حزم .
  2. عند المطالبة ، أضف مستودع SDK لأنظمة Apple الأساسية لـ Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. اختر مكتبة مصادقة Firebase.
  5. عند الانتهاء ، سيبدأ Xcode تلقائيًا في حل وتنزيل التبعيات الخاصة بك في الخلفية.

بعد ذلك ، قم بتنفيذ بعض خطوات التكوين:

  1. تأكد من تسجيل تطبيق Apple الخاص بك في Firebase. هذا يعني إدخال معرف حزمة التطبيق الخاص بك في قسم التسجيل بالإضافة إلى معلومات اختيارية إضافية مثل معرف متجر التطبيقات ومعرف الفريق ، وما إلى ذلك. سيكون هذا مطلوبًا للتحقق بشكل آمن من جمهور بيانات اعتماد Game Center الخاصة بالمستخدم قبل إكمال تسجيل الدخول.
  2. قم بتمكين Game Center كموفر تسجيل الدخول لمشروع Firebase الخاص بك:
    1. في وحدة تحكم Firebase ، افتح قسم المصادقة .
    2. في علامة التبويب طريقة تسجيل الدخول ، قم بتمكين موفر تسجيل الدخول في Game Center .

ادمج تسجيل الدخول إلى Game Center في لعبتك

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

تأكد من أن معرّف الحزمة الذي توفره لـ iTunes Connect يطابق معرّف الحزمة الذي استخدمته عند توصيل تطبيقك بمشروع Firebase.

كجزء من تكامل Game Center ، يمكنك تحديد معالج مصادقة يتم استدعاؤه في نقاط متعددة في عملية مصادقة Game Center. في هذا المعالج ، تحقق مما إذا كان اللاعب قد قام بتسجيل الدخول باستخدام Game Center. إذا كان الأمر كذلك ، يمكنك الاستمرار في تسجيل الدخول إلى Firebase.

سويفت

let localPlayer = GKLocalPlayer.localPlayer()
localPlayer.authenticateHandler = { (gcAuthViewController?, error) in
  if let gcAuthViewController = gcAuthViewController {
    // Pause any activities that require user interaction, then present the
    // gcAuthViewController to the player.
  } else if localPlayer.isAuthenticated {
    // Player is signed in to Game Center. Get Firebase credentials from the
    // player's Game Center credentials (see below).
  } else {
    // Error
  }
}

ج موضوعية

__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
localPlayer.authenticateHandler = ^(UIViewController *gcAuthViewController,
                                    NSError *error) {
  if (gcAuthViewController != nil) {
    // Pause any activities that require user interaction, then present the
    // gcAuthViewController to the player.
  } else if (localPlayer.isAuthenticated) {
    // Player is signed in to Game Center. Get Firebase credentials from the
    // player's Game Center credentials (see below).
  } else {
    // Error
  }
};

مصادقة مع Firebase

بعد أن تحدد أن اللاعب المحلي قد قام بتسجيل الدخول باستخدام Game Center ، قم بتسجيل دخول اللاعب إلى لعبتك عن طريق إنشاء كائن AuthCredential باستخدام GameCenterAuthProvider.getCredential GameCenterAuthProvider.getCredential() وتمرير هذا الكائن لتسجيل signIn(with:) :

سويفت

// Get Firebase credentials from the player's Game Center credentials
GameCenterAuthProvider.getCredential() { (credential, error) in
  if let error = error {
    return
  }
  // The credential can be used to sign in, or re-auth, or link or unlink.
  Auth.auth().signIn(with:credential) { (user, error) in
    if let error = error {
      return
    }
    // Player is signed in!
  }

ج موضوعية

// Get Firebase credentials from the player's Game Center credentials
[FIRGameCenterAuthProvider getCredentialWithCompletion:^(FIRAuthCredential *credential,
                                                         NSError *error) {
  // The credential can be used to sign in, or re-auth, or link or unlink.
  if (error == nil) {
    [[FIRAuth auth] signInWithCredential:credential
                              completion:^(FIRUser *user, NSError *error) {
      // If error is nil, player is signed in.
    }];
  }
}];

الخطوات التالية

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

في لعبتك ، يمكنك الحصول على معرف المستخدم Firebase UID من كائن User :

سويفت

let user = Auth.auth().currentUser
if let user = user {
  let 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 getToken(with:) instead.
  let uid = user.uid
}

ج موضوعية

FIRUser *user = [FIRAuth auth].currentUser;
if (user) {
  NSString *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 getTokenWithCompletion:completion: instead.
  NSString *uid = user.uid;
}

في قاعدة بيانات Firebase Realtime وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

للحصول على معلومات لاعب Game Center الخاص بالمستخدم أو للوصول إلى خدمات Game Center ، استخدم واجهات برمجة التطبيقات التي توفرها Game Kit .

لتسجيل خروج مستخدم من Firebase ، اتصل Auth.signOut() :

سويفت

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}

ج موضوعية

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}