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

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

قبل ان تبدأ

  1. إضافة Firebase لمشروعك C ++ .
  2. احصل على مفاتيح خادم مشروعك:
    1. انتقل إلى حسابات خدمة الصفحة في إعدادات المشروع الخاص بك.
    2. انقر فوق إنشاء مفتاح جديد خاص في الجزء السفلي من قسم Firebase الادارية 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::App . هناك تعيين واحد الى واحد بين App و Auth .
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
دعوة Auth::SignInWithCustomToken مع رمز من خادم المصادقة الخاص بك.
  1. عندما يسجّل المستخدمون الدخول إلى تطبيقك ، أرسل بيانات اعتماد تسجيل الدخول (على سبيل المثال ، اسم المستخدم وكلمة المرور) إلى خادم المصادقة. يتحقق الملقم الخاص بك وثائق التفويض وعائدات مخصصة المنوال إذا كانت صحيحة.
  2. بعد ظهور مخصصة رمزية من خادم المصادقة الخاص بك، نقله إلى 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 جوه:

    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 الحقيقي وسحابة التخزين قواعد الأمن ، يمكنك الحصول على قعت في هوية المستخدم الفريد المستخدم من auth متغير، واستخدامها للسيطرة على ما هي البيانات على وصول ويمكن للمستخدم.

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

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

auth->SignOut();