Google is committed to advancing racial equity for Black communities. See how.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

المصادقة مع Firebase باستخدام نظام مصادقة مخصص و C ++

يمكنك دمج مصادقة Firebase مع نظام مصادقة مخصص عن طريق تعديل خادم المصادقة الخاص بك لإنتاج رموز موقعة مخصصة عندما يقوم المستخدم بتسجيل الدخول بنجاح. يتلقى تطبيقك هذا الرمز المميز ويستخدمه للمصادقة مع Firebase.

قبل ان تبدأ

  1. أضف Firebase إلى مشروع C ++ الخاص بك .
  2. في ملف build.gradle مستوى المشروع ، تأكد من تضمين مستودع Google Maven في كل من buildscript الخاص بك buildscript allprojects .
  3. احصل على مفاتيح خادم مشروعك:
    1. انتقل إلى صفحة حسابات الخدمة في إعدادات مشروعك.
    2. انقر على إنشاء مفتاح خاص جديد في الجزء السفلي من قسم Firebase Admin SDK من صفحة حسابات الخدمة .
    3. يتم حفظ زوج المفاتيح العام / الخاص لحساب الخدمة الجديد تلقائيًا على جهاز الكمبيوتر الخاص بك. انسخ هذا الملف إلى خادم المصادقة الخاص بك.

مصادقة مع Firebase

فئة Auth هي البوابة لجميع استدعاءات API.
  1. أضف ملفات رأس التطبيق والمصادقة:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. في رمز التهيئة ، أنشئ فئة firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. firebase::auth::Auth على firebase::auth::Auth class لـ firebase::App . هناك تعيين واحد لواحد بين App Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
Call Auth::SignInWithCustomToken مع الرمز المميز من خادم المصادقة الخاص بك.
  1. عندما يسجّل المستخدمون الدخول إلى تطبيقك ، أرسل بيانات اعتماد تسجيل الدخول (على سبيل المثال ، اسم المستخدم وكلمة المرور) إلى خادم المصادقة الخاص بك. يتحقق الخادم الخاص بك من بيانات الاعتماد ويعيد رمزًا مخصصًا إذا كانت صالحة.
  2. بعد أن تتلقى الرمز المميز المخصص من خادم المصادقة ، قم Auth::SignInWithCustomToken إلى Auth::SignInWithCustomToken لتسجيل الدخول إلى المستخدم:
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCustomToken(custom_token);
    
  3. إذا كان برنامجك يحتوي على حلقة تحديث تعمل بانتظام (لنقل 30 أو 60 مرة في الثانية) ، فيمكنك التحقق من النتائج مرة واحدة لكل تحديث باستخدام Auth::SignInWithCustomTokenLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInWithCustomTokenLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    أو ، إذا كان برنامجك مدفوعًا بالأحداث ، فقد تفضل التسجيل رد على المستقبل .

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

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

  • في تطبيقاتك ، يمكنك الحصول على معلومات الملف الشخصي الأساسية للمستخدم من firebase::auth::User object:

    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      std::string name = user->display_name();
      std::string email = user->email();
      std::string photo_url = user->photo_url();
      // 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 firebase::auth::User::Token() instead.
      std::string uid = user->uid();
    }
    
  • في قاعدة بيانات Firebase Realtime وقواعد أمان التخزين السحابي ، يمكنك الحصول على معرف المستخدم الفريد للمستخدم الذي قام بتسجيل الدخول من متغير auth ، واستخدامه للتحكم في البيانات التي يمكن للمستخدم الوصول إليها.

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

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

auth->SignOut();