私は今この問題を2日間処理しています。私は、正しくユーザーにサインインする際に多くのトラブルを抱えています。私はユーザーを印刷する関数を実行していますか?毎秒.uid。正しく動くかどうかを確認することができます。中およびサインアウトFirebaseのログインとログアウトの問題
問題は似ています:ログインするとき、私はまだ私のデバッグセッションで毎秒「ゼロ」を参照してください。アプリを閉じると、ホーム画面をタップしてアプリを削除し、アプリを再び開くと、ユーザーは?uidが自動的にログインしているので正しく表示されます。私の質問はここにあります:このコードで何が問題なのですか?初めて正しくサインインしないのですか?
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil {
print(error)
return
}
else if result.isCancelled
{
}else{
print("no error, trying to sign in on facebook")
let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)
FIRAuth.auth()?.signIn(with: credential) { (user, error) in
print(error)
if error == nil{
print("trying to sign into firebase with facebook")
loggedIn = true
self.tryLogin()
self.removeRegisterView()
self.ref = FIRDatabase.database().reference()
self.ref.child("users").child("\(FIRAuth.auth()!.currentUser!.uid)").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("email"){
}else{
print("user has no email setted")
if let user = user {
let user = FIRAuth.auth()?.currentUser
let email = user?.email
self.ref.child("users/\(user!.uid)/email").setValue(email){ (error, ref) -> Void in
//self.setUpNewUser()
}
}
}
})
}
}
}
}
コードのメールアドレスとパスワード、アカウント作成のための::これはFacebookの認証のためのコードである
FIRAuth.auth()?.createUser(withEmail: registerEmail.text!, password: registerPassword.text!) { (user, error) -> Void in
if error == nil {
user!.sendEmailVerification(completion: nil) }
これは正しくユーザー権利ログインする必要がありますか?私のデバッグはまだ毎秒 "無し"と言います。繰り返しますが、アプリを閉じてアプリを再度開くと、正しいユーザーを表示してこの問題を解決します.uid。しかし、私はもちろん、初めて正しく動作することを望みます。サインアウト
も同様の効果があります:ログアウトボタンをクリックすると、これは私のコードです:
@IBAction func logOut(_ sender: UIButton) {
guard FIRAuth.auth()?.currentUser != nil else {
return
}
do {
print("user's acces token is \(FBSDKAccessToken.current())")
print("user's UID is \(user?.uid)")
print("trying to sign out")
FBSDKAccessToken.setCurrent(nil)
try FIRAuth.auth()!.signOut()
let loginManager = FBSDKLoginManager()
loginManager.logOut()
print("New user value's:")
print("user's acces token is \(FBSDKAccessToken.current())")
print("user's UID is \(user?.uid)")
loggedIn = false
storedValuesData.setValue(nil, forKey: "savedLoginEmail")
storedValuesData.setValue(nil, forKey: "savedLoginPassword")
JumpToVC()
} catch let error as NSError {
print(error.localizedDescription)
}
}
この私のデバッグが言っている:
ユーザーのACCESは、トークン(省略可能です)
ユーザーのUIDはオプション( "C8rBXwFTejSCAoVmV4EhNRZ6a9n1")
ログアウトしようとしています
新しいユーザー価値の:ユーザーのUIDは、結果として、私のデバッグがユーザのUIDで満たされますとそれは文句を言わない、正しくログアウト
(「C8rBXwFTejSCAoVmV4EhNRZ6a9n1」)はオプションです
nilをユーザーのACCESは、トークンがあります。もう一度:そのアプリケーションを閉じて、それを再オープンすると、nilを表示することで修正されます。
はどのようにそれは私がログインしてFacebookのために適切にサインアウトするたびに閉じて、私のアプリを再開する必要があるということができますか?私は間違って何をしていますか?
更新:これは奇妙です。それを私が直した。最初に、他のVCが参照可能な他のVCにこのコード行を追加しました。let user = FIRAuth.auth()?currentUser 私はその行を削除し、それをすべての関数に別々に追加しました。今それは動作します。そして、これは私の時間-_-私の首を壊すの時間後