让用户在使用 Google Sign-In Firebase 登录时创建唯一的用户名

问题描述 投票:0回答:1

我的 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 登录,然后将用户发送到表单页面,如果他们没有用户名,则在其中填写唯一的用户名。但还有更好的选择吗?

swift firebase firebase-authentication
1个回答
0
投票

方法3确实相当常见。在此流程中,您首先让用户完成登录 Google,然后检查您在 Firestore 中是否已拥有该用户的注册文档。如果没有,请将他们发送到注册页面 - 并让他们注册一个唯一的用户名。

执行此操作的常见方法之前已介绍过,因此我建议检查:

© www.soinside.com 2019 - 2024. All rights reserved.