如何在目标 c 中从 Firebase Auth 中删除“使用电子邮件登录”

Posted

技术标签:

【中文标题】如何在目标 c 中从 Firebase Auth 中删除“使用电子邮件登录”【英文标题】:How to remove "Sign In with Email" from Firebase Auth in objective c 【发布时间】:2017-07-09 18:02:01 【问题描述】:

我通过 google 和 facebook 使用登录,因此我使用 firebase Ui 身份验证。我做对了,但我不希望登录页面中出现“使用电子邮件登录”按钮。我的登录页面是

我的代码如下,

- (void)viewDidLoad 
    [super viewDidLoad];
    NSLog(@"%s","viewDidLoad");
    authUI = [FUIAuth defaultAuthUI];
    authUI.delegate = self;
    NSArray<id<FUIAuthProvider>> *providers = @[[[FUIGoogleAuth alloc] init],[[FUIFacebookAuth alloc] init]];
    authUI.providers = providers;

- (void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];
    NSLog(@"%s","viewDidAppear");
    NSLog([self isUserSignedIn] ? @"YES":@"NO");
    if([self isUserSignedIn] == false)
        [self showLoginView];
    

- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


-(BOOL)isUserSignedIn
    NSLog(@"%s","isUserSignedIn");

    FIRUser *currentUser = [[FIRAuth auth] currentUser];
    NSLog(@"%@",currentUser);
    if(currentUser == NULL)
        return false;
    
    else
        return true;
    


-(void)showLoginView
    NSLog(@"%s","showLoginView");
    UINavigationController *controller = [authUI authViewController];
    if(controller)
        [self presentViewController:controller animated:YES completion:nil];
    

- (void)authUI:(FUIAuth *)authUI didSignInWithUser:(nullable FIRUser *)user error:(nullable NSError *)error 
    if (error == nil) 
        NSLog(@"%@",user.email);
        NSLog(@"%@",user.displayName);
    
    else
        NSLog(@"%@",error);
    

- (IBAction)signOut:(id)sender 
    NSError *signOutError;
    BOOL status = [[FIRAuth auth] signOut:&signOutError];
    if (!status) 
        NSLog(@"Error signing out: %@", signOutError);
        return;
    
    else
        NSLog(@"SignedOut");
    

在 AppDelegate.m 中添加,

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options 
    NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
    NSLog(@"%@",url);
    return [[FUIAuth defaultAuthUI] handleOpenURL:url sourceApplication:sourceApplication];

如何删除“使用电子邮件登录”。我只添加了 google 和 Facebook 作为提供者,登录页面中怎么会有这个额外的按钮?

【问题讨论】:

默认启用电子邮件登录。有一个开放的功能请求允许禁用它,所以它看起来还没有实现。 github.com/firebase/FirebaseUI-ios/issues/230 【参考方案1】:
FUIAuth *authUI = [FUIAuth defaultAuthUI];
authUI.signInWithEmailHidden = YES;

从视图中删除了“使用电子邮件登录”按钮。

【讨论】:

在 Swift 4.2 中是authUI.isSignInWithEmailHidden = true

以上是关于如何在目标 c 中从 Firebase Auth 中删除“使用电子邮件登录”的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中从 Firebase 获取当前用户 ID

在 Flutter 中从 Firebase 检索用户电子邮件

如何在 Vue js 中安装 Firebase/auth

如何在目标 c 中从 int 转换为字符串:示例代码

如何在组件中从 nuxtjs 的 auth 模块加载数据

如何在 Swift 中从 Firebase 接收数组