FirebaseUI āĻšāϞ Firebase āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ SDK-āĻāϰ āĻāĻĒāϰ⧠āύāĻŋāϰā§āĻŽāĻŋāϤ āĻāĻāĻāĻŋ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āϝāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ āĻĄā§āϰāĻĒ-āĻāύ UI āĻĢā§āϞ⧠āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ FirebaseUI āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏā§āĻŦāĻŋāϧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§:
- āĻāĻāĻžāϧāĻŋāĻ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠: āĻāĻŽā§āϞ/āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ, āĻĢā§āύ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ, āĻā§āĻāϞ āϏāĻžāĻāύ-āĻāύ, āĻĢā§āϏāĻŦā§āĻ āϞāĻāĻāύ āĻāĻŦāĻ āĻā§āĻāĻāĻžāϰ āϞāĻāĻāύā§āϰ āĻāύā§āϝ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻšāĨ¤
- āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ : āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻā§āϰ āĻāĻžāĻāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻĒā§āϰāĻŦāĻžāĻšāĻŋāϤ āĻšāϝāĻŧ, āϝā§āĻŽāύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϰāĻŋāϏā§āĻāĨ¤
- āĻŦā§āύāĻžāĻŽā§ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϞāĻŋāĻā§āĻāĻŋāĻ : āĻĒāϰāĻŋāĻāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻŦā§āύāĻžāĻŽā§ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϞāĻŋāĻā§āĻ āĻāϰāϤ⧠āĻĒā§āϰāĻŦāĻžāĻšāĨ¤
- āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻāϝā§āĻā§āϝ : āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ āϰāĻžāĻāϤ⧠FirebaseUI āĻāϰ āĻā§āĻšāĻžāϰāĻž āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰā§āύāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āϝā§āĻšā§āϤ⧠āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏāĻāĻāĻāĻ āĻāĻĒā§āύ āϏā§āϰā§āϏ, āĻāĻĒāύāĻŋ āĻĒā§āϰāĻā§āĻā§āĻāĻāĻŋāĻā§ āĻāĻžāĻāĻāĻžāĻāĻžāĻŽāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻ āύā§āϏāĻžāϰ⧠āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
āĻāĻĒāύāĻžāϰ Apple āĻĒā§āϰāĻāϞā§āĻĒā§ Firebase āϝā§āĻ āĻāϰā§āύ āĨ¤
āĻāĻĒāύāĻžāϰ āĻĒāĻĄāĻĢāĻžāĻāϞ⧠FirebaseUI āϝā§āĻ āĻāϰā§āύ:
pod 'FirebaseUI'
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒāĻāύā§āĻĻ āĻāϰā§āύ, āĻāĻĒāύāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻŦāĻ āĻāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŽāύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
pod 'FirebaseUI/Auth' pod 'FirebaseUI/Google' pod 'FirebaseUI/Facebook' pod 'FirebaseUI/OAuth' # Used for Sign in with Apple, Twitter, etc pod 'FirebaseUI/Phone'
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻāύāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āĻā§āϤ āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠Firebase āĻāύāϏā§āϞ āĻĨā§āĻā§ āϤāĻž āĻāϰā§āύ⧎
āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏā§āĻ āĻāĻĒ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ Firebase āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāĻā§, āĻāĻĒāύāĻŋ āϝ⧠āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋ āϏāĻŽāϰā§āĻĨāύ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻž āϏāĻā§āώāĻŽ āĻāĻŦāĻ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻŽā§āϞ āĻ āĻŋāĻāĻžāύāĻž āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ
Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύ āĻāĻŦāĻ āĻāĻŽā§āϞ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ
Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤ āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, āĻāĻŽā§āϞ/āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤ āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŽā§āϞ āĻŦāĻž āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āϏāĻžāĻāύ-āĻāύ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰāĻž āĻāĻŦāĻļā§āϝāĻāĨ¤
āĻāĻāĻ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ (āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄāĻšā§āύ āϏāĻžāĻāύ-āĻāύ) āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻā§āώāĻŽ āĻāϰā§āύ āĻāĻŦāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ
FIREmailLinkAuthSignInMethod
āĻāϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋFUIEmailAuth
āĻāύāϏā§āĻā§āϝāĻžāύā§āϏ āĻļā§āϰ⧠āĻāϰ⧠āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ āϏāĻžāĻāύ āĻāύ āϏāĻā§āώāĻŽ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āĻŦā§āϧFIRActionCodeSettings
āĻ āĻŦāĻā§āĻā§āĻ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻžāϤā§handleCodeInApp
āϏāϤā§āϝ āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
āϏā§āĻāĻĢāĻ
var actionCodeSettings = ActionCodeSettings()
actionCodeSettings.url = URL(string: "https://example.firebasestorage.app")
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)
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
FIRActionCodeSettings *actionCodeSettings = [[FIRActionCodeSettings alloc] init];
actionCodeSettings.URL = [NSURL URLWithString:@"https://example.firebasestorage.app"];
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];
āĻāĻĒāϰāύā§āϤā§, āĻāĻĒāύāĻŋ āĻāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāĻāĻāĻžāϰā§āϰ āĻāĻžāĻā§ āϝ⧠URLāĻāĻŋ āĻĒāĻžāϏ āĻāϰā§āύ āϤāĻž āĻāĻĒāύāĻžāĻā§ āϏāĻžāĻĻāĻž āϤāĻžāϞāĻŋāĻāĻžāĻā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻĒāύāĻŋ Firebase āĻāύāϏā§āϞ⧠āĻāĻāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤ āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āĻĄā§āĻŽā§āύā§āϰ āĻ āϧā§āύ⧠URL āϝā§āĻ āĻāϰā§āύāĨ¤
āĻāĻāĻŦāĻžāϰ āĻāĻĒāύāĻŋ āĻĄāĻŋāĻĒ āϞāĻŋāĻā§āĻāĻāĻŋ āϧāϰāϞā§, āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ auth UI-āϤ⧠āĻĒāĻžāϏ āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻžāϤ⧠āĻāĻāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
āϏā§āĻāĻĢāĻ
FUIAuth.defaultAuthUI()!.handleOpen(url, sourceApplication: sourceApplication)
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
[[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
- FirebaseUI-iOS-āĻ āĻāĻŽā§āϞ āϞāĻŋāĻā§āĻ āϏāĻžāĻāύ-āĻāύ FirebaseUI-Android āĻāĻŦāĻ FirebaseUI-āĻāϝāĻŧā§āĻŦā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āϝā§āĻāĻžāύ⧠āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠FirebaseUI-Android āĻĨā§āĻā§ āĻĢā§āϞ⧠āĻļā§āϰ⧠āĻāϰ⧠FirebaseUI-āĻāϝāĻŧā§āĻŦā§āϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻāĻāĻŋ āĻā§āϞāϤ⧠āĻāĻŦāĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āϏāĻžāĻāύ-āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻŦāĻŋāĻĒāϰā§āϤ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻā§āώā§āϤā§āϰā§āĻ āĻāĻāĻ āĻāĻĨāĻž āĻĒā§āϰāϝā§āĻā§āϝāĨ¤
āĻāĻĒā§āϞ
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§ āĻāĻŦāĻ Apple āĻāĻžāĻāĻĄā§āϰ āϏāĻžāĻĨā§ Firebase āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āĻ ā§āϝāĻžāĻĒāϞ āĻŦā§āύāĻžāĻŽā§ āĻĄā§āĻāĻž āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻŦāĻŋāĻāĻžāĻāĻā§āϞāĻŋ āĻ āύā§āϏāϰāĻŖ āĻāϰā§āύ⧎
āĻāĻĒāύāĻžāϰ āĻāύāĻāĻžāĻāĻā§āϞāĻŽā§āύā§āĻ āĻĢāĻžāĻāϞ⧠Apple āϏāĻā§āώāĻŽāϤāĻžāϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āϝā§āĻ āĻāϰā§āύāĨ¤
āĻ ā§āϝāĻžāĻĒāϞā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻāĻāĻāĻŋ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĻā§āώā§āĻāĻžāύā§āϤ āĻļā§āϰ⧠āĻāϰā§āύ:
āϏā§āĻāĻĢāĻ
provider = FUIOAuth.appleAuthProvider()
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
FUIOAuth *provider = [FUIOAuth appleAuthProvider];
āĻā§āĻāϞ
- āĻāĻ āĻāĻŋāĻāĻā§āϰāĻŋāϝāĻŧāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠Google āϏāĻžāĻāύ-āĻāύ āϏā§āĻ āĻāĻĒ āĻāϰā§āύ
āĻĢā§āϏāĻŦā§āĻ
Facebook-āĻāϰ āĻļā§āϰā§āϰ āĻĒā§āώā§āĻ āĻž āĻ āύā§āϏāϰāĻŖ āĻāϰ⧠Facebook āϞāĻāĻāύ SDK āϏā§āĻ āĻāĻĒ āĻāϰā§āύ⧎
Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύ āĻāĻŦāĻ Facebook āϏāĻā§āώāĻŽ āĻāϰā§āύ⧎ Facebook āϏāĻžāĻāύ-āĻāύ āϏāĻā§āώāĻŽ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻāĻĒāύāĻžāϰ Facebook āĻ ā§āϝāĻžāĻĒ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻ ā§āϝāĻžāĻĒ āϏāĻŋāĻā§āϰā§āĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§, āϝāĻž āĻāĻĒāύāĻŋ Facebook āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰ⧠āĻāύāϏā§āϞ⧠āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻĒā§āϰāĻā§āĻā§āĻ āϏā§āĻāĻŋāĻāϏ > āϏāĻā§āώāĻŽāϤāĻž āϏā§āĻā§āϰā§āύ āĻĨā§āĻā§ āĻāĻĒāύāĻžāϰ Xcode āĻĒā§āϰāĻāϞā§āĻĒā§ āĻā§āĻā§āύ āĻļā§āϝāĻŧāĻžāϰāĻŋāĻ āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻžāϰ Xcode āĻĒā§āϰāĻāϞā§āĻĒā§ āĻāĻāĻāĻŋ URL āϏā§āĻāĻŋāĻŽ āĻšāĻŋāϏāĻžāĻŦā§
fb FACEBOOK_APP_ID
āϝā§āĻ āĻāϰā§āύāĨ¤Info.plist
āĻĢāĻžāĻāϞ⧠āĻāĻĒāύāĻžāϰ Facebook āĻ ā§āϝāĻžāĻĒ āĻāĻāĻĄāĻŋ āĻāĻŦāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύā§āϰ āύāĻžāĻŽ āϝā§āĻ āĻāϰā§āύ:āĻāĻžāĻŦāĻŋ āĻŽāĻžāύ FacebookAppID FACEBOOK_APP_ID
(āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ,1234567890
)FacebookDisplayName āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āύāĻžāĻŽ āĻāĻāĻāĻŋ Facebook āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āĻāĻĻāĻžāĻšāϰāĻŖ āĻļā§āϰ⧠āĻāϰā§āύ:
āϏā§āĻāĻĢāĻ
provider = FUIFacebookAuth(authUI: FUIAuth.defaultAuthUI())
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
FUIFacebookAuth *provider = [[FUIFacebookAuth alloc] initWithAuthUI:[FUIAuth defaultAuthUI]];
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ Facebook Limited Login āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ,
FUIFacebookAuth
āĻāĻĻāĻžāĻšāϰāĻŖā§useLimitedLogin
āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋ āϏā§āĻ āĻāϰā§āύāĨ¤āϏā§āĻāĻĢāĻ
provider.useLimitedLogin = true
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
provider.useLimitedLogin = YES;
āĻā§āĻāĻāĻžāϰ
Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύ āĻāĻŦāĻ Twitter āϏāĻā§āώāĻŽ āĻāϰā§āύ⧎ Twitter āϏāĻžāĻāύ-āĻāύ āϏāĻā§āώāĻŽ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āĻāĻĒāύāĻžāϰ Twitter API āĻā§āϰāĻžāĻšāĻ āĻā§ āĻāĻŦāĻ āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§, āϝāĻž āĻāĻĒāύāĻŋ Twitter āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āĻāύāϏā§āϞ⧠āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻā§āĻāĻāĻžāϰ āϞāĻāĻāύā§āϰ āĻāύā§āϝ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āĻāĻāĻāĻŋ OAuth āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āĻĻā§āώā§āĻāĻžāύā§āϤ āĻļā§āϰ⧠āĻāϰā§āύ:
āϏā§āĻāĻĢāĻ
provider = FUIOAuth.twitterAuthProvider()
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
FUIOAuth *provider = [FUIOAuth twitterAuthProvider];
āĻĢā§āύ āύāĻŽā§āĻŦāϰ
Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύ āĻāĻŦāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āϏāĻā§āώāĻŽ āĻāϰā§āύ⧎
Firebase āĻ āĻŦāĻļā§āϝāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻĨā§āĻā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻ āύā§āϰā§āϧ āĻāϏāĻā§ āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āϏāĻŽā§āĻĒāύā§āύ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ APN-āĻāϰ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§āĨ¤ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāĻžāύāĻžāϰ āĻāύā§āϝ āĻ ā§āϝāĻžāĻĒ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āϏāĻā§āώāĻŽ āĻāϰā§āύ āĻĻā§āĻā§āύāĨ¤
Firebase Authentication āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ APN-āĻāϰ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āϏāĻā§āώāĻŽ āĻāϰāϤā§:
āĻāĻā§āϏāĻā§āĻĄā§, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻĒā§āĻļ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋāĻā§āϞāĻŋ āϏāĻā§āώāĻŽ āĻāϰā§āύ āĨ¤
Firebase-āĻ āĻāĻĒāύāĻžāϰ APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§ āĻāĻĒāϞā§āĻĄ āĻāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§ āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠Apple āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰ⧠āϏāĻĻāϏā§āϝ āĻā§āύā§āĻĻā§āϰ⧠āĻāĻāĻāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ⧎
Firebase āĻāύāϏā§āϞ⧠āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāĻŋāϤāϰā§, āĻāĻŋāϝāĻŧāĻžāϰ āĻāĻāĻāύ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ, āĻĒā§āϰāĻāϞā§āĻĒ āϏā§āĻāĻŋāĻāϏ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āĻā§āϞāĻžāĻāĻĄ āĻŽā§āϏā§āĻāĻŋāĻ āĻā§āϝāĻžāĻŦāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ⧎
iOS āĻ ā§āϝāĻžāĻĒ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύā§āϰ āĻ āϧā§āύ⧠APN-āĻāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§- āϤā§, āĻāĻĒāύāĻžāϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§, āĻ āĻĨāĻŦāĻž āĻā§āĻĒāĻžāĻĻāύ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§, āĻŦāĻž āĻāĻāϝāĻŧāĻ āĻāĻĒāϞā§āĻĄ āĻāϰāϤ⧠āĻāĻĒāϞā§āĻĄ āĻŦā§āϤāĻžāĻŽā§ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤ āĻ āύā§āϤāϤ āĻāĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ.
āĻāĻĒāύāĻŋ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻžāϰ āĻā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§āĻā§āύ āϏā§āĻāĻžāύ⧠āĻŦā§āϰāĻžāĻāĻ āĻāϰā§āύ, āĻāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ āĻāĻŦāĻ āĻā§āϞā§āύ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤ āĻā§āĻāĻŋāϰ āĻāύā§āϝ āĻā§ āĻāĻāĻĄāĻŋ āϝā§āĻ āĻāϰā§āύ ( āĻ ā§āϝāĻžāĻĒāϞ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāϰ⧠āϏāĻĻāϏā§āϝ āĻā§āύā§āĻĻā§āϰ⧠āĻāĻĒāϞāĻŦā§āϧ) āĻāĻŦāĻ āĻāĻĒāϞā§āĻĄ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤
āĻāĻĒāύāĻžāϰ āϝāĻĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻāĻāĻāĻŋ APNs āĻļāĻāϏāĻžāĻĒāϤā§āϰ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻāĻŋ āĻāĻĒāϞā§āĻĄ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎
āϝāĻāύ āĻā§āύ⧠āĻĄāĻŋāĻāĻžāĻāϏ⧠APN-āĻāϰ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ āύāĻž, āϤāĻāύ Firebase āĻ āύā§āϰā§āϧāĻā§āϞāĻŋ āϝāĻžāĻāĻžāĻ āĻāϰāϤ⧠reCAPTCHA āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
reCAPTCHA āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āϏāĻā§āώāĻŽ āĻāϰāϤā§, Xcode-āĻ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋ āĻāϰā§āύ:
- āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻā§āĻā§āĻ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āĻā§āϞā§āύ: āĻŦāĻžāĻŽ āĻā§āϰāĻŋ āĻāĻŋāĻāϤ⧠āĻĒā§āϰāĻā§āĻā§āĻā§āϰ āύāĻžāĻŽā§ āĻĄāĻžāĻŦāϞ āĻā§āϞāĻŋāĻ āĻāϰā§āύāĨ¤ āϞāĻā§āώā§āϝ āĻŦāĻŋāĻāĻžāĻ āĻĨā§āĻā§ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āϤāĻĨā§āϝ āĻā§āϝāĻžāĻŦāĻāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰā§āύ āĻāĻŦāĻ URL āĻĒā§āϰāĻāĻžāϰ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻāϰā§āύ⧎
- + āĻŦā§āϤāĻžāĻŽā§ āĻā§āϞāĻŋāĻ āĻāϰā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ URL āϏā§āĻāĻŋāĻŽ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āĻāύāĻā§āĻĄ āĻāϰāĻž āĻ
ā§āϝāĻžāĻĒ āĻāĻāĻĄāĻŋ āϝā§āĻ āĻāϰā§āύāĨ¤ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ iOS āĻ
ā§āϝāĻžāĻĒā§āϰ āĻŦāĻŋāĻāĻžāĻā§ Firebase āĻāύāϏā§āϞā§āϰ āϏāĻžāϧāĻžāϰāĻŖ āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĒāύāĻžāϰ āĻāύāĻā§āĻĄ āĻāϰāĻž āĻ
ā§āϝāĻžāĻĒ āĻāĻāĻĄāĻŋ āĻā§āĻāĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻ
āύā§āϝāĻžāύā§āϝ āĻā§āώā§āϤā§āϰāĻā§āϞāĻŋ āĻĢāĻžāĻāĻāĻž āϰāĻžāĻā§āύāĨ¤
āϏāĻŽā§āĻĒāύā§āύ āĻšāϞā§, āĻāĻĒāύāĻžāϰ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύāĻāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋāϰ āĻŽāϤ⧠āĻĻā§āĻāϤ⧠āĻšāĻŦā§ (āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ-āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŽāĻžāύāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§):
āĻāĻā§āĻāĻŋāĻ : Firebase āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ APN āĻā§āĻā§āύ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻĒā§āϤā§, Firebase āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āϝ⧠āύā§āϰāĻŦ āĻĒā§āĻļ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻĒāĻžāĻ āĻžāϝāĻŧ āϤāĻž āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāϤ⧠āĻāĻŦāĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āϏāĻŽāϝāĻŧ reCAPTCHA āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻĒā§āώā§āĻ āĻž āĻĨā§āĻā§ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻžāϏā§āĻāĻŽ āϏā§āĻāĻŋāĻŽ āĻĒā§āύāĻāύāĻŋāϰā§āĻĻā§āĻļāĻā§ āĻŦāĻžāϧāĻž āĻĻāĻŋāϤ⧠āĻŽā§āĻĨāĻĄ āϏā§āĻāĻāϞāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āϏā§āĻāĻāϞāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻāϰāϤ⧠āĻĒāĻāύā§āĻĻ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻĒāϰāĻŋāĻļāĻŋāώā§āĻ āĻĻā§āĻā§āύ: Firebase SDK āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĄāĻā§āϏ⧠āϏā§āĻāĻāϞāĻŋāĻ āύāĻž āĻāϰ⧠āĻĢā§āύ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĨ¤
āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ
FirebaseUI āϏāĻžāĻāύ āĻāύ āĻĢā§āϞ⧠āĻļā§āϰ⧠āĻāϰāϤā§, āĻĒā§āϰāĻĨāĻŽā§ FirebaseUI āĻļā§āϰ⧠āĻāϰā§āύ:
āϏā§āĻāĻĢāĻ
import FirebaseAuthUI
/* ... */
FirebaseApp.configure()
let authUI = FUIAuth.defaultAuthUI()
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
@import FirebaseAuthUI;
...
[FIRApp configure];
FUIAuth *authUI = [FUIAuth defaultAuthUI];
// You need to adopt a FUIAuthDelegate protocol to receive callback
authUI.delegate = self;
āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻŋ āϏāĻŽāϰā§āĻĨāύ āĻāϰāϤ⧠āĻāĻžāύ āĻāĻŽāύ āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠FirebaseUI āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰā§āύ:
āϏā§āĻāĻĢāĻ
import FirebaseAuthUI
import FirebaseFacebookAuthUI
import FirebaseGoogleAuthUI
import FirebaseOAuthUI
import FirebasePhoneAuthUI
let providers: [FUIAuthProvider] = [
FUIGoogleAuth(),
FUIFacebookAuth(),
FUITwitterAuth(),
FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()),
]
self.authUI.providers = providers
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
@import FirebaseAuthUI;
@import FirebaseFacebookAuthUI;
@import FirebaseGoogleAuthUI;
@import FirebaseOAuthUI;
@import FirebasePhoneAuthUI;
...
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
}
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary *)options {
NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];
}
āĻ
āĻŦāĻļā§āώā§, FUIAuth
āĻĨā§āĻā§ AuthViewController
āĻāϰ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĒāĻžāύāĨ¤ āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻŋ āĻāĻāĻŋāĻā§ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāĻ āĻāύā§āĻā§āϰā§āϞāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻ
āĻĨāĻŦāĻž āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϰ āĻ
āύā§āϝ āĻāĻŋāĻ āĻāύā§āĻā§āϰā§āϞāĻžāϰ āĻĨā§āĻā§ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āϏā§āĻāĻĢāĻ
āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāĻ āĻĒā§āϤā§:
let authViewController = authUI.authViewController()
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āϏāϰāĻžāϏāϰāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻāĻŋāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
let phoneProvider = FUIAuth.defaultAuthUI().providers.first as! FUIPhoneAuth
phoneProvider.signIn(withPresenting: currentlyVisibleController, phoneNumber: nil)
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāĻ āĻĒā§āϤā§:
UINavigationController *authViewController = [authUI authViewController];
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āϏāϰāĻžāϏāϰāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻāĻŋāĻ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
FUIPhoneAuth *phoneProvider = [FUIAuth defaultAuthUI].providers.firstObject;
[phoneProvider signInWithPresentingViewController:currentlyVisibleController phoneNumber:nil];
āĻāĻĒāύāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĻā§āĻļā§āϝ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻĒāϰ⧠āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻĢāϞāĻžāĻĢāϞāĻāĻŋ didSignInWithUser:error:
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠FirebaseUI āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāĻā§ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ:
āϏā§āĻāĻĢāĻ
func authUI(_ authUI: FUIAuth, didSignInWith user: FIRUser?, error: Error?) {
// handle user and error as necessary
}
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
- (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()
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
[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)
}
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
- (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];
}
āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻĒāϰāĻŋāώā§āĻŦāĻžāϰ āĻļāϰā§āϤāĻžāĻŦāϞā§āϤ⧠URL āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āϝāĻž āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋāϰ āϏā§āĻā§āϰāĻŋāύ⧠āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻāĻā§:
āϏā§āĻāĻĢāĻ
let kFirebaseTermsOfService = URL(string: "https://example.com/terms")!
authUI.tosurl = kFirebaseTermsOfService
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
authUI.TOSURL = [NSURL URLWithString:@"https://example.com/terms"];
āĻ āĻŦāĻļā§āώā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻāĻŽ āĻŦāĻžāύā§āĻĄā§āϞ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰ⧠āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĻā§āĻāĻžāύ⧠āĻŦāĻžāϰā§āϤāĻž āĻāĻŦāĻ āĻĒā§āϰāĻŽā§āĻĒāĻāĻā§āϞāĻŋ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
āϏā§āĻāĻĢāĻ
authUI.customStringsBundle = NSBundle.mainBundle() // Or any custom bundle.
āĻāĻĻā§āĻĻā§āĻļā§āϝ-C
authUI.customStringsBundle = [NSBundle mainBundle]; // Or any custom bundle.
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
- FirebaseUI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŦāĻ āĻāĻžāϏā§āĻāĻŽāĻžāĻāĻ āĻāϰāĻžāϰ āĻŦāĻŋāώāϝāĻŧā§ āĻāϰāĻ āϤāĻĨā§āϝā§āϰ āĻāύā§āϝ, GitHub-āĻ README āĻĢāĻžāĻāϞāĻāĻŋ āĻĻā§āĻā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ FirebaseUI-āϤ⧠āĻā§āĻāĻā§ āĻĒāĻžāύ āĻāĻŦāĻ āĻāϏā§āϝ⧠āĻāϰā§āύ āĻāĻŦāĻ āϰāĻŋāĻĒā§āϰā§āĻ āĻāϰāϤ⧠āĻāĻžāύ, GitHub āϏāĻŽāϏā§āϝāĻž āĻā§āϰā§āϝāĻžāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤