Firebase 在创建新用户时注销当前用户

Posted

技术标签:

【中文标题】Firebase 在创建新用户时注销当前用户【英文标题】:Firebase logs out current user when creating a new one 【发布时间】:2017-04-30 11:12:11 【问题描述】:

我正在创建一个管理员用户可以创建新用户的 iPhone 应用,但正如 Firebase 文档所述,“如果创建了新帐户,则用户会自动登录”,所以我'正在寻找一种方法来避免登录到该新创建的用户。

在不使用新的 Firebase Admin SDK(即仅网络 AFAIK)的情况下,我有什么办法可以避免这种情况?

【问题讨论】:

Firebase Admin SDK 用于在 node.js 服务器上运行(这并不意味着它仅适用于 Web)。但是,如果您想要仅客户端的方法,它确实行不通。您也许可以尝试类似的方法:***.com/questions/37517208/… 【参考方案1】:

您可以通过多种方式解决此问题:

选项 1:将管理员用户的凭据安全地保存在您的设备上。然后,当用户创建新用户时,使用管理员凭据登录。这会将您注销并立即重新登录。

选项 2:使用 admin sdk 在 web 端创建一个带有 rest API 调用的用户。

【讨论】:

谢谢!我认为在设备上保存凭据,即使是在安全的情况下也有点危险,而且我没有网络端,因为我使用 Firebase 作为我的后端,但这两个选项都可以。 请勾选正确答案。提前谢谢你【参考方案2】:

我得到了this javascript smart workaround 为 ios 工作。完美运行:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"GoogleService-Info" ofType:@"plist"];
FIROptions *secondaryAppOptions = [[FIROptions alloc] initWithContentsOfFile:plistPath];
[FIRApp configureWithName:@"Secondary" options:secondaryAppOptions];
FIRApp *secondaryApp = [FIRApp appNamed:@"Secondary"];
FIRAuth *secondaryAppAuth = [FIRAuth authWithApp:secondaryApp];

[secondaryAppAuth createUserWithEmail:user.email
                             password:user.password
                           completion:^(FIRUser * _Nullable user, NSError * _Nullable error) 
                                [secondaryAppAuth signOut:nil];
                          ];

【讨论】:

以上是关于Firebase 在创建新用户时注销当前用户的主要内容,如果未能解决你的问题,请参考以下文章

使用Firebase Google用户身份验证更改用户

注销后,身份验证firebase会记住我

使用firebase创建新用户时如何避免自动登录[重复]

Cloud Functions for Firebase - 创建新用户时写入数据库

NoSuchMethodError:创建新用户时尝试调用非函数,如 null: 'dart.global.firebase.auth'

想要向新用户显示欢迎页面,并在 Flutter Firebase 中向登录用户显示主屏幕