我正在尝试在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
}
}
答案 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
答案 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,您无法自定义流量。 (请参阅自定义电子邮件/密码屏幕部分)