我的 Firebase 应用程序中有两种登录方法
我已经通过电子邮件进行了设置,以便用户在注册时必须创建唯一的用户名。 我现在尝试用 Google 登录做同样的事情。但这如何才能实现呢?
选项 1(additionalUserInfo.isNewUser)
我可以检查 isNewUser 但此时 firestore 已经创建了该帐户。所以它没有任何作用...
let gidSignInResult = try await GIDSignIn.sharedInstance.signIn(withPresenting: topVC)
guard let idToken: String = gidSignInResult.user.idToken?.tokenString else {
throw URLError(.badServerResponse)
}
let accessToken: String = gidSignInResult.user.accessToken.tokenString
let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: accessToken)
let (model, newUser) = try await signInHandle(credential: credential)
if (newUser) {
//Go to Sign up where user chooses a username and then logs in again
} else {
//Login
}
选项2
我还可以让用户输入用户名,然后使用 Google Auth 登录。但这会使用户每次注销和登录时都返回到注册页面...
选项3
最好的选择似乎是让用户首先使用 Google Auth 登录,然后将用户发送到表单页面,如果他们没有用户名,则在其中填写唯一的用户名。但还有更好的选择吗?
方法3确实相当常见。在此流程中,您首先让用户完成登录 Google,然后检查您在 Firestore 中是否已拥有该用户的注册文档。如果没有,请将他们发送到注册页面 - 并让他们注册一个唯一的用户名。
执行此操作的常见方法之前已介绍过,因此我建议检查: