如何知道用户是否正在注册或使用Facebook&火力地堡

时间:2017-08-06 03:52:35

标签: ios swift facebook authentication firebase-authentication

我发现很难将登录逻辑与注册逻辑分开,因为firebase只有一种方法可以通过Facebook验证用户:<?php if(isset($status) && !empty($status)){ foreach ($status as $key ) { $cur = date("Y-m-d H:i:s",time()); if ($key->tgl_berobat < $cur) { echo "No Patient for Today"; } else { echo $key->no_antrian; } } } else { echo "No Patient for Today"; } //OR if(isset($status) && !empty($status)){ foreach ($status as $key ) { $cur = date("Y-m-d H:i:s",time()); if(isset($key->tgl_berobat) && !empty($key->tgl_berobat)){ if ($key->tgl_berobat < $cur) { echo "No Patient for Today"; } else { echo $key->no_antrian; } } else { echo "No Patient for Today"; } } } else { echo "No Patient for Today"; } ?> 。这一种方法将登录现有用户,或者如果他们不存在则自动注册,因此我无法知道用户是否第一次注册,因此我可以继续使用有关firebase数据库中用户的信息。

非常感谢任何有助于解决此问题的帮助。我的应用程序是用Swift编写的,所以任何带代码的解决方案在Swift中都会有所帮助。谢谢

查看回调内的评论

signIn(with: AuthCredential)

1 个答案:

答案 0 :(得分:6)

如果您使用的是Firebase的数据库,我假设您在那里存储有关该用户的信息。授权用户时,请检查该用户是否在您的数据库中。如果他们不是,那是他们第一次注册。这是我的工作:

let accessToken = FBSDKAccessToken.current()
guard let accessTokenString = accessToken?.tokenString else {return}

let credentials = FacebookAuthProvider.credential(withAccessToken: accessTokenString)

Auth.auth().signIn(with: credentials, completion: { (user, error) in
    let id = Auth.auth().currentUser?.uid
    let ref = Database.database().reference(withPath: "users")

    ref.child(id).observeSingleEvent(of: .value, with: {(snapshot) in
        if snapshot.exists() {
            //User is signing IN
        } else {
            //User is signing UP
        }
    } 
}

假设数据库结构:

  • 用户
    • uniqueUserId