如何判断是否已经创建了Facebook和Gmail Firebase用户

时间:2019-04-02 16:48:30

标签: swift firebase login

当用户使用Gmail或Facebook登录时,他们将被带到一个页面以输入有关其帐户的更多信息(因为仅Gmail或Facebook并未提供所需的用户信息),并且在用户输入之后信息,则用户通过该提供程序登录到Firebase,并将他们的信息保存到Firebase实时数据库中。

我的问题是,当用户再次使用该帐户重新登录时,他们将被带到该页面以输入已经输入的信息。那么,如何确定用户是否已经注册了Facebook或Gmail,以便我可以绕过此屏幕直接进入应用程序?

我当时想的是,在提供商登录完成后,立即使用受关注的提供商登录用户,然后对照数据库中创建的用户ID检查用户ID,以查看其是否存在,如果不存在,则将其带到屏幕上输入数据。但是,使用这种方法,我担心如果用户进入此输入数据屏幕,然后关闭该应用程序并重新打开它,则该用户将在没有此信息的情况下登录。还有另一种方法吗?谢谢!

我用Facebook登录的方式:

FBSDKLoginManager().logIn(withReadPermissions: ["email"], from: self) { (result, err) in
        if err != nil {
            print("Custom FB Login failed:", err)
            self.popup.showUnsuccessfullAlert(message: "Failed to login with facebook")
            return
        }

        print("the result from logging in = \(result)")

        self.showEmailAddress()
    }

以及我在Google上登录的方式:

 func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {

    if let err = error {
        print("falied to log into google", err)
        self.popup.showUnsuccessfullAlert(message: "Failed to login with google")
        return
    }else{
        print("successfully logged into google ", user)

        self.gmailUser = user
        performSegue(withIdentifier: "toSignUpGmail", sender: nil)

    }
}

1 个答案:

答案 0 :(得分:0)

您可以在AppDelegate.swift文件上使用此方法。

func applicationWillEnterForeground(_ application: UIApplication) {
   //check if the user exists here and do something about it.
}

此功能将在用户关闭应用程序后每次打开时执行。