אמת באמצעות Firebase באמצעות מערכת אימות מותאמת אישית ו- C ++

באפשרותך לשלב אימות Firebase עם מערכת אימות מותאמת אישית על ידי שינוי שרת האימות שלך כדי לייצר אסימונים חתומים בהתאמה אישית כאשר משתמש נכנס בהצלחה. האפליקציה שלך מקבל אסימון זה ומשתמש בו לאימות עם Firebase.

לפני שאתה מתחיל

  1. להוסיף Firebase לפרויקט C ++ שלך .
  2. קבל את מפתחות השרת של הפרויקט שלך:
    1. עבור אל שירות חשבונות דף ההגדרות של הפרויקט שלך.
    2. לחץ צור חדש פרטי מפתח בתחתית סעיף SDK של ניהול Firebase של דף חשבונות שירות.
    3. צמד המפתחות הציבורי / הפרטי של חשבון השירות החדש נשמר אוטומטית במחשב שלך. העתק קובץ זה לשרת האימות שלך.

אמת עם Firebase

Auth בכיתה היא השער עבור כל השיחות API.
  1. מוסיפים את קבצי הכותרת המחבר ואת App:
    #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 משתנה, ולהשתמש בו כדי לקבוע אילו נתונים גישה יכול משתמש.

תוכל לאפשר למשתמשים להיכנס לאפליקציה שלך דרך ספקי אימות מרובים על ידי מקשר auth אישורי ספק לחשבון משתמש קיים.

כדי לצאת מהחשבון משתמש, קוראים SignOut() :

auth->SignOut();