相关疑难解决方法(0)

Firebase - 删除并重新安装应用程序不会取消对用户进行身份验证

使用以下代码对用户进行身份验证后(下面是我的代码的修剪版本,因此只显示成功的登录逻辑)...

let firebaseReference = Firebase(url: "https://MY-FIREBASE.firebaseio.com")
Run Code Online (Sandbox Code Playgroud)

 

FBSession.openActiveSessionWithReadPermissions(["public_profile", "user_friends"], allowLoginUI: true,
    completionHandler: { session, state, error in

        if state == FBSessionState.Open {
            let accessToken = session.accessTokenData.accessToken
            firebaseReference.authWithOAuthProvider("facebook", token: accessToken,
                withCompletionBlock: { error, authData in

                    if error != nil {
                        // Login failed.
                    } else {
                        // Logged in!
                        println("Logged in! \(authData)")
                    }
            })
        }
    })
}
Run Code Online (Sandbox Code Playgroud)

(即启动并运行应用程序,成功登录).

如果您随后删除了应用程序并在同一设备上重新安装,则此调用(我在应用程序委托中使用以确定用户是否已登录)将始终返回他们已登录的状态.

if firebaseReference.authData == nil {
    // Not logged in
} else {
    // Logged in
}
Run Code Online (Sandbox Code Playgroud)

这是为什么?我本来以为删除应用程序并重新安装它应该擦除所有数据.

如果您重置iOS模拟器中的内容和设置,并安装该应用程序,该firebaseReference.authData属性将再次nil.

ios firebase swift

34
推荐指数
4
解决办法
1万
查看次数

Firebase - iOS Swift:FIRAuth.auth().signOut()未注销当前用户

我正在使用Firebase构建一个应用程序,该应用程序使用一个初始文件SignInViewController加载登录页面,供用户通过电子邮件进行身份验证,从而触发以下方法:

@IBAction func didTapSignIn(sender: AnyObject) {
    let email = emailField.text
    let password = passwordField.text
    FIRAuth.auth()?.signInWithEmail(email!, password: password!) { (user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.signedIn(user!)
    }
}

func signedIn(user: FIRUser?) {
    AppState.sharedInstance.displayName = user?.displayName ?? user?.email
    AppState.sharedInstance.signedIn = true
    NSNotificationCenter.defaultCenter().postNotificationName(Constants.NotificationKeys.SignedIn, object: nil, userInfo: nil)
    performSegueWithIdentifier(Constants.Segues.SignInToHome, sender: nil)
}
Run Code Online (Sandbox Code Playgroud)

SignInViewController还检查是否有缓存的当前用户,当应用程序启动,如果是这样,迹象表明,用户在:

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    //Synchronously gets the cached current user, or null if there is none.
    if let user …
Run Code Online (Sandbox Code Playgroud)

ios firebase swift firebase-authentication

6
推荐指数
2
解决办法
8286
查看次数

在Facebook的Firebase上注销

之前会问这个问题: Firebase注销无法在Swift中正常工作 使用Firebase 3注销用户,Swift仍然显示`currentUser'Firebase -iOS Swift:FIRAuth.auth()。signOut()未注销当前用户

但是,所有答案都不适用于我。我有VC 1,用户可以在其中登录,并且在viewdidappear中,我有打印该用户的打印文件。在VC 2中,我有一个按钮,应该注销用户并返回VC1。VC2中的代码2:

@IBAction func logOut(_ sender: UIButton) {
    if FIRAuth.auth()?.currentUser != nil {
        do {
           try! FIRAuth.auth()!.signOut()

        } catch let error as NSError {
            print(error.localizedDescription)
        }
    }
    FBSDKAccessToken.setCurrent(nil)
    loggedIn = false
    storedValuesData.setValue(nil, forKey: "savedLoginEmail")
    storedValuesData.setValue(nil, forKey: "savedLoginPassword")
    jumpToVC1()
}
Run Code Online (Sandbox Code Playgroud)

当我回到VC 1时,当用户按下注销按钮时,打印将再次打印用户的UID。但是该用户应注销,因此打印应为零。当我确定用户已注销时,如何确保仅显示VC 1?我以为完成块会很好,但是我不确定在这里如何工作...

firebase swift firebase-authentication

1
推荐指数
1
解决办法
951
查看次数

标签 统计

firebase ×3

swift ×3

firebase-authentication ×2

ios ×2