Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

הוסף כניסה בקלות לאפליקציית iOS שלך באמצעות FirebaseUI

FirebaseUI היא ספרייה הבנויה על-גבי ה- SDK לאימות Firebase המספקת זרמי ממשק משתמש נפתחים לשימוש באפליקציה שלך. FirebaseUI מספק את היתרונות הבאים:

  • ספקים מרובים : זרימת כניסה לדוא"ל / סיסמה, קישור דוא"ל, אימות טלפון, כניסה של Google, כניסה לפייסבוק וכניסה לטוויטר.
  • ניהול חשבון : זורם לטיפול במשימות ניהול חשבונות, כגון יצירת חשבון ואיפוס סיסמאות.
  • קישור חשבון אנונימי : זורם לקישור חשבונות אנונימיים באופן אוטומטי לספקי זהות.
  • ניתן להתאמה אישית : התאם אישית את המראה של FirebaseUI כך שיתאים לאפליקציה שלך. כמו כן, מכיוון ש- FirebaseUI הוא קוד פתוח, תוכלו למזלג את הפרויקט ולהתאים אותו בדיוק לצרכים שלכם.

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

  1. הוסף את Firebase לפרויקט ה- iOS שלך .

  2. הוסף את FirebaseUI לפודפיל שלך:

    pod 'FirebaseUI'
    

    אם אתה מעדיף, תוכל להוסיף רק את רכיב Auth ואת הספקים שבהם אתה רוצה להשתמש:

    pod 'FirebaseUI/Auth'
    
    pod 'FirebaseUI/Google'
    pod 'FirebaseUI/Facebook'
    pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc
    pod 'FirebaseUI/Phone'
    
  3. אם עדיין לא חיברת את האפליקציה שלך לפרויקט Firebase שלך, עשה זאת ממסוף Firebase .

הגדר שיטות כניסה

לפני שתוכל להשתמש ב- Firebase כדי להיכנס למשתמשים, עליך להפעיל ולהגדיר את שיטות הכניסה שאתה רוצה לתמוך בהן.

כתובת דוא"ל וסיסמה

במסוף Firebase , פתח את קטע האימות והפעל אימות דוא"ל וסיסמה.

  1. במסוף Firebase , פתח את קטע האימות . בכרטיסיה שיטת כניסה , הפעל את ספק הדוא"ל / סיסמה . שים לב כי יש לאפשר כניסה באמצעות דוא"ל / סיסמה כדי להשתמש בכניסה לקישור דוא"ל.

  2. באותו סעיף, הפעל שיטת כניסה לקישור דוא"ל (כניסה ללא סיסמה) ולחץ על שמור .

  3. ניתן להפעיל סימן קישור הדוא"ל על ידי אתחול FUIEmailAuth למשל עם FIREmailLinkAuthSignInMethod . יהיה עליך גם לספק אובייקט FIRActionCodeSettings חוקי עם handleCodeInApp מוגדר נכון.

מָהִיר

var actionCodeSettings = ActionCodeSettings()
actionCodeSettings.url = URL(string: "https://example.appspot.com")
actionCodeSettings.handleCodeInApp = true
actionCodeSettings.setAndroidPackageName("com.firebase.example", installIfNotAvailable: false, minimumVersion: "12")

let provider = FUIEmailAuth(authUI: FUIAuth.defaultAuthUI()!,
                            signInMethod: FIREmailLinkAuthSignInMethod,
                            forceSameDevice: false,
                            allowNewEmailAccounts: true,
                            actionCodeSetting: actionCodeSettings)

מטרה-ג

FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
actionCodeSettings.URL = [NSURL URLWithString:@"https://example.appspot.com"];
actionCodeSettings.handleCodeInApp = YES;
[actionCodeSettings setAndroidPackageName:@"com.firebase.example"
                    installIfNotAvailable:NO
                           minimumVersion:@"12"];

id<FUIAuthProvider> provider = [[FUIEmailAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]
                                                       signInMethod:FIREmailLinkAuthSignInMethod
                                                    forceSameDevice:NO
                                              allowNewEmailAccounts:YES
                                                  actionCodeSetting:actionCodeSettings];
  1. בנוסף, עליך להוסיף לרשימת היתרים את כתובת ה- URL שאתה מעביר למייזר הפנימי. אתה יכול לעשות זאת במסוף Firebase , פתח את קטע האימות . בכרטיסיה שיטת כניסה , הוסף את כתובת האתר תחת דומיינים מורשים .

  2. לאחר שתתפוס את הקישור העמוק, יהיה עליך להעביר אותו לממשק המשתמש האמיתי כדי שניתן יהיה לטפל בו.

מָהִיר

FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)

מטרה-ג

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. כניסה לקישור דוא"ל ב- FirebaseUI-iOS תואמת ל- FirebaseUI-Android ו- FirebaseUI-web כאשר משתמש אחד שמתחיל את הזרימה מ- FirebaseUI-Android יכול לפתוח את הקישור ולהשלים כניסה עם FirebaseUI-web. הדבר נכון גם לגבי הזרימה ההפוכה.

תפוח עץ

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

  2. הוסף את היכולת כניסה באמצעות Apple לקובץ הזכויות שלך.

  3. אתחל מופע של ספק OAuth שהוגדר עבור כניסה באמצעות Apple:

    מָהִיר

    provider = FUIOAuth.appleAuthProvider()
    

    מטרה-ג

    FUIOAuth *provider = [FUIOAuth appleAuthProvider];
    

גוגל

  1. במסוף Firebase , פתח את קטע האימות והפעל כניסה של Google.

  2. הוסף את מזהה הלקוח ההפוך שלך כמתווה URL בפרויקט ה- Xcode שלך. תוכל למצוא ערך זה GoogleService-Info.plist .

פייסבוק

  1. הגדר את ה- SDK לכניסה לפייסבוק על ידי ביצוע עמוד התחלת העבודה של פייסבוק .

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

  3. אפשר שיתוף מחזיקי מפתחות בפרויקט ה- Xcode שלך ​​ממסך הגדרות הפרויקט> יכולות .

  4. הוסף fb FACEBOOK_APP_ID כתובות אתרים בפרויקט ה- Xcode שלך.

  5. הוסף את מזהה האפליקציה שלך ב- Facebook ואת שם התצוגה לקובץ Info.plist :

    מַפְתֵחַ ערך
    FacebookAppID FACEBOOK_APP_ID (לדוגמה, 1234567890 )
    FacebookDisplayName שם האפליקציה שלך

טוויטר

  1. במסוף Firebase , פתח את קטע האימות והפעל את Twitter. כדי לאפשר כניסה לטוויטר, עליך לספק את המפתח והסוד הצרכן של ממשק ה- API של Twitter שאתה יכול לקבל במסוף ניהול היישומים של Twitter.

  2. אתחל מופע של ספק OAuth שהוגדר לכניסה לטוויטר:

    מָהִיר

    provider = FUIOAuth.twitterAuthProvider()
    

    מטרה-ג

    FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
    

מספר טלפון

  1. במסוף Firebase , פתח את קטע האימות והפעל כניסה למספר טלפון.

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

    כדי לאפשר התראות APN לשימוש עם אימות Firebase:

    1. ב- Xcode, הפעל הודעות דחיפה לפרויקט שלך.

    2. העלה את מפתח האימות של ה- APN שלך ל- Firebase. אם עדיין אין לך מפתח אימות של APN, ראה קביעת תצורה של APNs עם FCM .

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

      2. במפתח האימות של APN תחת תצורת אפליקציית iOS , לחץ על כפתור העלאה .

      3. דפדף למיקום בו שמרת את המפתח שלך, בחר אותו ולחץ על פתח . הוסף את מזהה המפתח עבור המפתח (זמין באישורים, מזהים ופרופילים במרכז החברים למפתחים של אפל ) ולחץ על העלה .

      אם כבר יש לך תעודת APN, תוכל להעלות את האישור במקום זאת.

  3. כאשר לא ניתן לקבל התראות APN במכשיר, Firebase משתמש ב- reCAPTCHA כדי לאמת בקשות.

    כדי לאפשר אימות reCAPTCHA, אם עדיין לא הוספת את מזהה הלקוח ההפוך שלך כקבוצת URL (למשל, כדי להפעיל כניסה של Google), עשה זאת בפרויקט ה- Xcode שלך. אתה יכול למצוא ערך זה GoogleService-Info.plist .

  4. אופציונלי : Firebase משתמש בשיטוט בשיטה כדי להשיג באופן אוטומטי את אסימון ה- APN של האפליקציה שלך, לטיפול בהתראות הדחיפה השקטות ש- Firebase שולח לאפליקציה שלך, וכדי ליירט אוטומטית את הפניית התוכניות המותאמות אישית מדף האימות reCAPTCHA במהלך האימות.

    אם אתה מעדיף לא להשתמש בסחרחורת, ראה נספח: שימוש בכניסה לטלפון מבלי לסחוט במסמכי אימות SDK של Firebase.

להתחבר

כדי להתחיל את זרימת הכניסה של FirebaseUI, ראשית אתחל את FirebaseUI:

מָהִיר

import FirebaseUI

/* ... */

FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self

מטרה-ג

@import FirebaseUI;

...

[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;

לאחר מכן, הגדר את FirebaseUI לשימוש בשיטות הכניסה שאתה רוצה לתמוך בה:

מָהִיר

import FirebaseUI

let providers: [FUIAuthProvider] = [
  FUIGoogleAuth(),
  FUIFacebookAuth(),
  FUITwitterAuth(),
  FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers

מטרה-ג

@import FirebaseUI;

...

NSArray<id<FUIAuthProvider>> *providers = @[
  [[FUIGoogleAuth alloc] init],
  [[FUIFacebookAuth alloc] init],
  [[FUITwitterAuth alloc] init],
  [[FUIPhoneAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]]
];
_authUI.providers = providers;

אם אפשרת כניסה של גוגל או פייסבוק, יישם מטפל בתוצאה של זרמי ההרשמה של גוגל ופייסבוק:

מָהִיר

func application(_ app: UIApplication, open url: URL,
    options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
  let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as! String?
  if FUIAuth.defaultAuthUI()?.handleOpen(url, sourceApplication: sourceApplication) ?? false {
    return true
  }
  // other URL handling goes here.
  return false
}

מטרה-ג

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary *)options {
  NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
  return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}

לבסוף, קבל מופע של AuthViewController מ- FUIAuth . לאחר מכן תוכל להציג אותו כבקר התצוגה הראשונה של האפליקציה שלך או להציג אותו מבקר תצוגה אחר באפליקציה שלך.

מָהִיר

כדי להשיג את בורר שיטות הכניסה:

let authViewController = authUI.authViewController()

אם אתה משתמש רק בכניסה למספר טלפון, תוכל להציג את תצוגת הכניסה למספר הטלפון ישירות במקום:

let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)

מטרה-ג

כדי להשיג את בורר שיטות הכניסה:

UINavigationController *authViewController = [authUI authViewController];

אם אתה משתמש רק בכניסה למספר טלפון, תוכל להציג את תצוגת הכניסה למספר הטלפון ישירות במקום:

FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];

לאחר הצגת תצוגת האימות והמשתמש נכנס, התוצאה מוחזרת לנציג didSignInWithUser:error: של FirebaseUI ב- didSignInWithUser:error: method:

מָהִיר

func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
  // handle user and error as necessary
}

מטרה-ג

   - (void)authUI:(FUIAuth *)authUI
didSignInWithUser:(nullable FIRUser *)user
            error:(nullable NSError *)error {
  // Implement this method to handle signed in user or error if any.
}

התנתק

FirebaseUI מספק שיטות נוחות להתנתק מאימות Firebase כמו גם לכל ספקי הזהות החברתית:

מָהִיר

authUI.signOut()

מטרה-ג

[authUI signOut];

התאמה אישית

ניתן להתאים אישית את מסכי הכניסה על ידי סיווג משנה של בקרי התצוגה של FirebaseUI ולציין אותם בשיטות הנציגות של FUIAuth :

מָהִיר

func authPickerViewController(forAuthUI authUI: FUIAuth) -> FUIAuthPickerViewController {
  return FUICustomAuthPickerViewController(nibName: "FUICustomAuthPickerViewController",
                                           bundle: Bundle.main,
                                           authUI: authUI)
}

func emailEntryViewController(forAuthUI authUI: FUIAuth) -> FUIEmailEntryViewController {
  return FUICustomEmailEntryViewController(nibName: "FUICustomEmailEntryViewController",
                                           bundle: Bundle.main,
                                           authUI: authUI)
}

func passwordRecoveryViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordRecoveryViewController {
  return FUICustomPasswordRecoveryViewController(nibName: "FUICustomPasswordRecoveryViewController",
                                                 bundle: Bundle.main,
                                                 authUI: authUI,
                                                 email: email)
}

func passwordSignInViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignInViewController {
  return FUICustomPasswordSignInViewController(nibName: "FUICustomPasswordSignInViewController",
                                               bundle: Bundle.main,
                                               authUI: authUI,
                                               email: email)
}

func passwordSignUpViewController(forAuthUI authUI: FUIAuth, email: String) -> FUIPasswordSignUpViewController {
  return FUICustomPasswordSignUpViewController(nibName: "FUICustomPasswordSignUpViewController",
                                               bundle: Bundle.main,
                                               authUI: authUI,
                                               email: email)
}

func passwordVerificationViewController(forAuthUI authUI: FUIAuth, email: String, newCredential: AuthCredential) -> FUIPasswordVerificationViewController {
  return FUICustomPasswordVerificationViewController(nibName: "FUICustomPasswordVerificationViewController",
                                                     bundle: Bundle.main,
                                                     authUI: authUI,
                                                     email: email,
                                                     newCredential: newCredential)
}

מטרה-ג

- (FUIAuthPickerViewController *)authPickerViewControllerForAuthUI:(FUIAuth *)authUI {
  return [[FUICustomAuthPickerViewController alloc] initWithNibName:@"FUICustomAuthPickerViewController"
                                                             bundle:[NSBundle mainBundle]
                                                             authUI:authUI];
}

- (FUIEmailEntryViewController *)emailEntryViewControllerForAuthUI:(FUIAuth *)authUI {
  return [[FUICustomEmailEntryViewController alloc] initWithNibName:@"FUICustomEmailEntryViewController"
                                                             bundle:[NSBundle mainBundle]
                                                             authUI:authUI];

}

- (FUIPasswordSignInViewController *)passwordSignInViewControllerForAuthUI:(FUIAuth *)authUI
                                                                     email:(NSString *)email {
  return [[FUICustomPasswordSignInViewController alloc] initWithNibName:@"FUICustomPasswordSignInViewController"
                                                                 bundle:[NSBundle mainBundle]
                                                                 authUI:authUI
                                                                  email:email];

}

- (FUIPasswordSignUpViewController *)passwordSignUpViewControllerForAuthUI:(FUIAuth *)authUI
                                                                     email:(NSString *)email {
  return [[FUICustomPasswordSignUpViewController alloc] initWithNibName:@"FUICustomPasswordSignUpViewController"
                                                                 bundle:[NSBundle mainBundle]
                                                                 authUI:authUI
                                                                  email:email];

}

- (FUIPasswordRecoveryViewController *)passwordRecoveryViewControllerForAuthUI:(FUIAuth *)authUI
                                                                         email:(NSString *)email {
  return [[FUICustomPasswordRecoveryViewController alloc] initWithNibName:@"FUICustomPasswordRecoveryViewController"
                                                                   bundle:[NSBundle mainBundle]
                                                                   authUI:authUI
                                                                    email:email];

}

- (FUIPasswordVerificationViewController *)passwordVerificationViewControllerForAuthUI:(FUIAuth *)authUI
                                                                                 email:(NSString *)email
                                                                         newCredential:(FIRAuthCredential *)newCredential {
  return [[FUICustomPasswordVerificationViewController alloc] initWithNibName:@"FUICustomPasswordVerificationViewController"
                                                                       bundle:[NSBundle mainBundle]
                                                                       authUI:authUI
                                                                        email:email
                                                                newCredential:newCredential];
}

באפשרותך להתאים אישית את כתובת האתר לתנאי השירות של האפליקציה שלך, המקושרים במסך יצירת החשבון:

מָהִיר

let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService

מטרה-ג

authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];

לבסוף, תוכל להתאים אישית את ההודעות וההנחיות המוצגות למשתמשים שלך על ידי ציון חבילה מותאמת אישית:

מָהִיר

authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.

מטרה-ג

authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.

הצעדים הבאים

  • למידע נוסף על שימוש והתאמה אישית של FirebaseUI, עיין בקובץ README ב- GitHub.
  • אם אתה מוצא את הבעיה ב- FirebaseUI וברצונך לדווח עליה, השתמש במעקב אחר הבעיות של GitHub .