在FirebaseUI中跳过提供程序屏幕

时间:2017-06-01 22:58:45

标签: ios swift firebase firebase-authentication

我正在尝试在FirebaseUI中找到跳过提供商选项屏幕的方法。

我只需要手机验证,无需显示用户提供商选项。

有没有办法将用户直接带到手机验证屏幕?

这是我在viewcontroller上的代码

override func viewDidLoad() {
    super.viewDidLoad()
    //createGradientLayer()
    checkLoggedIn()
}

func checkLoggedIn() {
    Auth.auth().addStateDidChangeListener { auth, user in
        if user != nil {
            // User is signed in.
        } else {
            // No user is signed in.
            self.login()
        }
    }
}

func login() {
    let authUI = FUIAuth.defaultAuthUI()
    authUI?.delegate = self as? FUIAuthDelegate
    let providers: [FUIAuthProvider] = [
        FUIPhoneAuth(authUI:FUIAuth.defaultAuthUI()!),
        ]
    authUI?.providers = providers
    FUIAuth.defaultAuthUI()?.isSignInWithEmailHidden = true
    let authViewController = authUI?.authViewController()
    self.present(authViewController!, animated: true, completion: nil)
}

func authUI(_ authUI: FUIAuth, didSignInWith user: User?, error: Error?) {
    if error != nil {
        //Problem signing in
        login()
    }else {
        //User is in! Here is where we code after signing in

    }
}

3 个答案:

答案 0 :(得分:1)

你快到了。在FUIAuthProvider初始化后直接启动Phone Auth flow:

FUIPhoneAuth *provider = self.authUI.providers.firstObject;
[provider signInWithPresentingViewController:self];

这是sample code

为了向欢迎屏幕子类FUIAuthPickerViewController添加徽标并实施FUIAuthDelegate委托方法:

func authPickerViewController(forAuthUI authUI: FUIAuth) -> FUIAuthPickerViewController

这是one more sample

答案 1 :(得分:1)

让我们假设您有一个带有按钮的视图控制器,以启动电话验证。这是应该包含在按钮(obj-c)中的代码

- (IBAction)btnPhoneValidation:(id)sender {
    FUIAuth *authUI = [FUIAuth defaultAuthUI];
    authUI.delegate = self;

    //The following array may contain diferente options for validate the user (with Facebook, with google, e-mail...), in this case we only need the phone method 
    NSArray<id<FUIAuthProvider>> * providers = @[[[FUIPhoneAuth alloc]initWithAuthUI:[FUIAuth defaultAuthUI]]];
    authUI.providers = providers;

    //You can present the screen asking for the user number with the following method.
    FUIPhoneAuth *provider = authUI.providers.firstObject;
    [provider signInWithPresentingViewController:self phoneNumber:nil];

    //This is the default way to present several options.
//    UINavigationController *authViewController = [authUI authViewController];
//    [self presentViewController:authViewController animated:YES completion:nil];

}

相同的过程,但是具有电子邮件身份验证,替换提供程序类型:

NSArray<id<FUIAuthProvider>> * providers = @[[[FUIEmailAuth alloc]init]];
    authUI.providers = providers;

FUIEmailAuth *provider = authUI.providers.firstObject;
[provider signInWithPresentingViewController:self email:nil];

答案 2 :(得分:0)

根据FirebaseAuthUI documentation,您无法自定义流量。 (请参阅自定义电子邮件/密码屏幕部分)