Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
דף זה תורגם על ידי Cloud Translation API.
Switch to English

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

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

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

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

אמת עם Firebase

מחלקת Auth היא השער לכל שיחות ה- API.
  1. הוסף את קבצי הכותרת Auth ו- App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. בקוד האתחול שלך, צור מחלקת firebase::App מחלקת 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 עבור firebase::App שלך 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 :

    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();