2016-06-21 20 views
7

Tôi đang sử dụng API căn cứ hỏa lực mới nhất (3.2.1) và tôi đang sử dụng mã này để kiểm tra xem người dùng được đăng nhập:căn cứ hỏa lực đăng xuất không làm việc trong Swift

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    if(self.navigationController != nil){ 
     self.navigationController!.setNavigationBarHidden(true, animated: true) 
    } 

    if(FIRAuth.auth() != nil){ 
     self.performSegueWithIdentifier("loginSuccessSegue", sender: self) 
    } 
} 

Nói cách khác nếu auth đối tượng có mặt Tôi đang chuyển sang bộ điều khiển khác. Trên bộ điều khiển mà tôi có đăng xuất nút được làm dấu ra như thế này:

do{ 
    try FIRAuth.auth()?.signOut() 
    self.performSegueWithIdentifier("logoutSegue", sender: self) 
}catch{ 
    print("Error while signing out!") 
} 

Tôi không nhận được lỗi trên hoạt động này, nhưng khi tôi chuyển sang đăng nhập điều khiển, đối tượng auth đây là hiện tại và tôi nhận được chuyển trở lại một lần nữa để điều khiển với dữ liệu. Tôi cũng đã thử kiểm tra đối tượng người dùng hiện tại trong auth và nó hiện diện và hợp lệ.

Bất kỳ ai cũng biết cách tôi đăng xuất đúng cách?

+0

tôi chỉ thực hiện điều này trong ứng dụng của riêng tôi, với một chút giúp đỡ từ Wiley tại Firebase. Bạn có thể thêm người nghe như tôi đã mô tả trong [this] (http://stackoverflow.com/questions/39301815/firebase-ios-swift-firauth-auth-signout-not-signing-out-current-user#answer- 40412452) câu trả lời. –

Trả lời

21

hãy thử sử dụng:

try! FIRAuth.auth()!.signOut() 

Đây là mã tôi có trong một IBAction, và nó chỉ làm việc tốt:

try! FIRAuth.auth()!.signOut()  
if let storyboard = self.storyboard { 
    let vc = storyboard.instantiateViewControllerWithIdentifier("firstNavigationController") as! UINavigationController 
     self.presentViewController(vc, animated: false, completion: nil) 
    } 
+0

Tôi không hiểu những gì tôi sẽ đạt được với điều này, và tôi đã thử nó nhưng nó vẫn không hoạt động. – Dejan

+0

Điều đó có hiệu quả đối với tôi. Tất cả tôi có thể khuyên bạn nên tạo một dự án mới và thiết lập một đăng nhập cơ bản trong/đăng xuất ngay khi bạn thực hiện nó trong dự án thực của bạn. Nếu nó vẫn không hoạt động, thì bạn có một cái gì đó sai trái trong cách bạn đang sử dụng nó, nếu không chỉ cần nhìn vào những gì khác nhau. –

+1

@Damien Bannerot ngay cả khi bạn chạy thử thành công! FIRAuth.auth() !. signOut(), .currentUser.uid sẽ vẫn được lưu trữ trong keychain. Nếu có ai biết cách sửa lỗi này, vui lòng đăng câu trả lời đúng. – bibscy

Các vấn đề liên quan