با استفاده از FirebaseUI به راحتی به برنامه iOS خود وارد شوید

FirebaseUI یک کتابخانه ساخته شده در بالای فایربیس احراز هویت SDK فراهم می کند که قطره در UI جریان برای استفاده در برنامه شما است. FirebaseUI مزایای زیر را ارائه می دهد:

  • ارائه دهندگان متعدد: جریانهای ورود به سیستم برای ایمیل / رمز عبور، لینک ایمیل، احراز هویت تلفن، Google وارد شوید، فیس بوک ورود، و توییتر ورود.
  • مدیریت حساب: جریان مسئولیت رسیدگی به وظایف مدیریت حساب، مانند ایجاد حساب و بازنشانی رمز عبور.
  • حساب کاربری ناشناس ارتباط: جریان را به طور خودکار حساب ناشناس پیوند به ارائه دهندگان هویت.
  • قابل برنامه ریزی: سفارشی کردن ظاهر FirebaseUI برای مطابقت با برنامه شما. همچنین ، از آنجا که FirebaseUI منبع باز است ، می توانید پروژه را فورک کرده و آن را دقیقاً مطابق نیاز خود سفارشی کنید.

قبل از اینکه شروع کنی

  1. اضافه کردن فایربیس به پروژه های iOS خود را .

  2. FirebaseUI را به Podfile خود اضافه کنید:

    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 برای ورود به سیستم کاربران ، باید روشهای ورود به سیستم را که می خواهید پشتیبانی کنید فعال و پیکربندی کنید.

آدرس ایمیل و رمز عبور

در فایربیس کنسول ، باز کردن بخش احراز هویت و فعال کردن ایمیل و رمز عبور تصدیق.

  1. در فایربیس کنسول ، باز کردن بخش احراز هویت. بر روی ثبت نام در تب روش، فعال کردن ارائه دهنده ایمیل / رمز عبور. توجه داشته باشید که ورود به سیستم ایمیل/رمز عبور باید برای استفاده از ورود به سیستم پیوند ایمیل فعال باشد.

  2. در همان بخش، فعال کردن لینک ایمیل (passwordless ورود به سیستم) ثبت نام در روش و روی Save کلیک کنید.

  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 زیر دامنه مجاز است.

  2. هنگامی که پیوند عمیق را گرفتید ، باید آن را به رابط کاربری author منتقل کنید تا بتوان آن را مدیریت کرد.

سریع

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

هدف-ج

[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
  1. لینک ایمیل ورود به سیستم در FirebaseUI-در iOS سازگار با FirebaseUI-آندروید و FirebaseUI وب که در آن یک کاربر از شروع جریان از FirebaseUI-آندروید می توانید از لینک و کامل ورود به سیستم با FirebaseUI وب را باز کنید. همین امر در مورد جریان مخالف نیز صادق است.

سیب

  1. دنبال قبل از شروع و مطابق با اپل داده مورد نیاز بخش در فایربیس بی نام و ورود به سیستم با اپل راهنمای.

  2. ورود به سیستم با قابلیت Apple را به پرونده حقوق خود اضافه کنید.

  3. یک نمونه ارائه دهنده OAuth پیکربندی شده برای ورود به سیستم با Apple را راه اندازی کنید:

    سریع

    provider = FUIOAuth.appleAuthProvider()
    

    هدف-ج

    FUIOAuth *provider = [FUIOAuth appleAuthProvider];
    

گوگل

  1. در فایربیس کنسول ، باز کردن بخش احراز هویت و ثبت نام در Google فعال کنید.

  2. شناسه مشتری معکوس خود را به عنوان یک طرح URL در پروژه Xcode خود اضافه کنید. شما می توانید این مقدار را در پیدا GoogleService-Info.plist فایل.

فیس بوک

  1. تنظیم فیس بوک ورود به SDK های زیر گرفتن صفحه آغاز فیس بوک .

  2. در فایربیس کنسول ، باز کردن بخش احراز هویت و فعال کردن فیس بوک. برای فعال کردن ورود به سیستم فیس بوک ، باید شناسه برنامه Facebook و برنامه مخفی خود را ارائه دهید ، که می توانید در کنسول توسعه دهندگان فیس بوک دریافت کنید.

  3. فعال کردن به اشتراک گذاری در Keychain در پروژه Xcode متعلق به خود را از تنظیمات پروژه> صفحه نمایش قابلیت های.

  4. اضافه کردن fb FACEBOOK_APP_ID به عنوان یک طرح URL در پروژه Xcode متعلق به خود را.

  5. اضافه کردن ID فیس بوک برنامه و نمایش نام خود را به Info.plist فایل:

    کلید ارزش
    FacebookAppID FACEBOOK_APP_ID (به عنوان مثال، 1234567890 )
    FacebookDisplayName نام برنامه شما

توییتر

  1. در فایربیس کنسول ، باز کردن بخش احراز هویت و فعال کردن توییتر. برای فعال کردن ورود به سیستم توییتر ، باید کلید و راز مصرف کننده API Twitter خود را ارائه دهید ، که می توانید آن را در کنسول مدیریت برنامه Twitter دریافت کنید.

  2. یک نمونه ارائه دهنده OAuth را برای ورود به Twitter پیکربندی کنید:

    سریع

    provider = FUIOAuth.twitterAuthProvider()
    

    هدف-ج

    FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
    

شماره تلفن

  1. در فایربیس کنسول ، باز کردن بخش احراز هویت و فعال کردن شماره تلفن ثبت نام در.

  2. Firebase باید بتواند تأیید کند که درخواست ورود به سیستم شماره تلفن از برنامه شما آمده است. یکی از راه های انجام این کار اعلان های APN است. مشاهده فعال کردن برنامه تایید برای جزئیات بیشتر.

    برای فعال کردن اعلان های APN برای استفاده با احراز هویت Firebase:

    1. در Xcode متعلق به، را قادر می سازد اطلاعیه های فشار برای پروژه شما.

    2. کلید احراز هویت APN خود را در Firebase بارگذاری کنید. اگر شما در حال حاضر یک کلید APN ها احراز هویت دارند، مطمئن شوید که به ایجاد یک در توسعه مرکز اپل کاربران .

      1. در داخل پروژه خود را در فایربیس کنسول، را انتخاب کنید آیکون چرخ دنده، تنظیمات پروژه را انتخاب کنید، و سپس برگه ابر پیام انتخاب کنید.

      2. در کلید احراز هویت APN ها تحت پیکربندی برنامه های iOS، کلیک بر روی دکمه آپلود.

      3. مرور به محل که در آن کلید خود را نجات داد، آن را انتخاب کنید، و روی Open کلیک کنید. اضافه کردن شماره شناسایی کلید برای کلید (موجود در توسعه مرکز اپل کاربران ) و آپلود را کلیک کنید.

      اگر قبلاً گواهی APNs دارید ، می توانید به جای آن گواهی را بارگذاری کنید.

  3. وقتی اعلان های APN در دستگاهی دریافت نمی شوند ، Firebase از reCAPTCHA برای تأیید درخواست ها استفاده می کند.

    برای فعال کردن تأیید مجدد reCAPTCHA ، اگر قبلاً شناسه مشتری معکوس خود را به عنوان یک طرح URL اضافه نکرده اید (به عنوان مثال ، برای فعال کردن ورود به سیستم Google) ، این کار را در پروژه Xcode خود انجام دهید. شما می توانید این مقدار را در پیدا GoogleService-Info.plist فایل.

  4. اختیاری: فایربیس با استفاده از روش swizzling به صورت خودکار بدست آوردن APN ها برنامه خود را رمز، برای رسیدگی به اطلاعیه های فشار خاموش که فایربیس می فرستد به برنامه خود را، و به طور خودکار رهگیری تغییر مسیر طرح های سفارشی از صفحه تایید reCAPTCHA را در طول تأیید.

    اگر ترجیح می دهید استفاده swizzling نیست، و ضمیمه: با استفاده از ورود به سیستم تلفن بدون swizzling در اسناد احراز هویت فایربیس SDK.

ورود

برای شروع ورود به سیستم 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;

اگر ورود به سیستم Google یا Facebook را فعال کرده اید ، یک کنترل کننده برای نتیجه جریان ثبت نام در Google و Facebook پیاده سازی کنید:

سریع

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];

بعد از اینکه شما در حال حاضر از نظر احراز هویت و کاربری با، نتیجه این است تا نماینده FirebaseUI تایید در بازگشت didSignInWithUser:error: روش:

سریع

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];

سفارشی سازی

شما می توانید ورود به سیستم صفحه نمایش با subclassing کنترل مشاهده 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 و می خواهم آن را گزارش، با استفاده از ردیاب شماره گیتهاب .