我发现很难将登录逻辑与注册逻辑分开,因为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)
答案 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
}
}
}
假设数据库结构: