Ios 如何检查Google/Facebook帐户是否已用于在Firebase Auth上创建帐户
我目前正在使用Firebase身份验证注册/登录我的应用程序。 我有Facebook注册/登录和谷歌注册/登录的自定义按钮 例如,Facebook注册/登录按钮的代码是Ios 如何检查Google/Facebook帐户是否已用于在Firebase Auth上创建帐户,ios,swift,facebook,firebase,firebase-authentication,Ios,Swift,Facebook,Firebase,Firebase Authentication,我目前正在使用Firebase身份验证注册/登录我的应用程序。 我有Facebook注册/登录和谷歌注册/登录的自定义按钮 例如,Facebook注册/登录按钮的代码是 @objc private func performFacebookLogin(_ sender: UIButton) { let fbLoginManager : LoginManager = LoginManager() fbLoginManager.logIn(permissions: ["
@objc private func performFacebookLogin(_ sender: UIButton) {
let fbLoginManager : LoginManager = LoginManager()
fbLoginManager.logIn(permissions: ["email"], from: self) { (result, error) -> Void in
if let error = error {
print(error)
} else {
if result == nil {
print("no result!")
return
}
if AccessToken.current == nil {
print("no token")
return
}
DispatchQueue.main.async {
ThirdPartySignupViewController.push(fromVC: self, method: .facebook)
}
}
}
}
如果用户尚未使用此Facebook帐户在应用程序中创建帐户,则这会将用户带到另一个视图控制器,向其帐户添加其他信息
但是,我找不到任何方法来确定Facebook帐户以前是否用于应用程序中的帐户,在这种情况下,我只想让用户登录并将其带到主屏幕。有办法做到这一点吗
我尝试了登录(with:)
方法,希望如果应用程序中没有具有此Facebook帐户凭据的帐户,它会返回一个错误,但这不会起作用,因为如果以前没有使用此Facebook帐户创建帐户,这将最终创建一个新帐户
let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)
Auth.auth().signIn(with: credential) { (authResult, error) in
//check if I get an error if the Facebook account has not been used
}
(编辑)所需流量为1。使用Facebook/Google登录→ 2.输入其他信息→ 3.在Firebase身份验证上创建帐户 使用Firebase进行身份验证时,
Auth
对象通过返回。因此,您可以看到新用户或现有用户的状态
let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)
Auth.auth().signIn(with: credential) { (authResult, error) in
//authResult?.additionalUserInfo?.isNewUser
if let auth = authResult{
if auth.additionalUserInfo?.isNewUser {
// User has not been authenticated before. Do what you need
} else {
// User has been authenticated before
}
}
}
我在发布之前也尝试过这一点,但正如我在问题中所说,
.sign(with:)
将在检查用户是否为新用户之前创建一个新帐户。所需流量为1。使用Facebook/Google登录→ 2.输入其他信息→ 3.在Firebase身份验证上创建帐户。您所说的“创建新帐户”是什么意思如果凭证
相同,firebase不会在身份验证
中创建新用户。我的意思是在数据库上为我的应用程序创建一个帐户。因此,我基本上使用Facebook和Google登录以及电子邮件/密码,这样在我的应用程序上创建帐户就更容易了(无需输入电子邮件、姓名等),但是,在用户在Facebook/Google登录后出现的视图控制器上输入其他必要信息并按下“创建帐户”之前,不会在我的数据库中创建应用程序的帐户。但是,如果我使用登录(with:)
,无论用户是否最终在应用程序上创建帐户,都会将用户添加到Firebase身份验证,我认为这是不必要的。我认为最好在用户在数据库上创建帐户后才将用户添加到Firebase身份验证,我想知道是否有办法做到这一点。这种方法目前既不受支持,也没有很好的实践。您需要做的是缓存用户facebook令牌,并在提供所有数据后继续登录和创建帐户。然而,这并不能回答你的问题。您可以让用户登录,如果出现错误,也可以使用ie;找不到帐户,请进入登录。但是,如果用户只是输入了错误的凭据,那么这是一个错误的用户体验。最终,使用你最好的判断,但没有明确的,支持的方法来解决你的问题。还有什么请告诉我。