2016-09-02 50 views
10

Tôi đang sử dụng đoạn mã sau, để phát hiện nhà cung cấp auth và đăng xuất đúngcăn cứ hỏa lực Auth - được cung cấp ID

static func logOut() { 
    let auth = FIRAuth.auth()! 
    let provider = auth.currentUser?.providerID 
    switch provider! { 
     case "Facebook": FBSDKLoginManager().logOut() 
     case "Google": GIDSignIn.sharedInstance().signOut() 
     case "Twitter": Twitter.sharedInstance().sessionStore.logOutUserID(TWTRAPIClient.withCurrentUser().userID!) 
     default: 
      print("Unknown provider ID: \(provider!)") 
      return 
    } 
    try! auth.signOut() 
} 

Nhưng nhà cung cấp luôn luôn là "căn cứ hỏa lực". Tôi đang làm gì sai? 0_o Một khi mã đó ném "Facebook" khi tôi đăng nhập vào twitter. Cảm ơn trước

UPD: Vâng, tôi thực sự có thể lưu trữ nhà cung cấp xác thực trong UserDefaults, nhưng có thể đó là lỗi Firebase. Tôi đang sử dụng Firebase SDK 3.5.2

+0

không 'FIRAuth.auth() !. signOut() 'ra? – KhanXc

+0

@KhanXc hoạt động, nhưng tôi nghĩ là không đủ. Trong Android nó sẽ dẫn đến trường hợp, nơi bạn chọn tài khoản google khác nhau –

+0

Nhưng tại sao tôi không thể nhận được nhà cung cấp? Nếu tôi sẽ cần nó trong mọi trường hợp. Đó là một lỗi, hoặc tôi đang làm điều gì sai –

Trả lời

19

Vì người dùng có thể đăng nhập vào tài khoản xác thực Firebase của họ với nhiều nhà cung cấp, ID nhà cung cấp cấp cao nhất hiện nay (thường là) là Firebase.

Nhưng currentUser has a providerData property cung cấp thông tin về các nhà cung cấp cụ thể. Vòng lặp qua FIRAuth.auth()!.currentUser.providerData sẽ cung cấp cho bạn số FIRUserInfo.providerID mà bạn đang tìm kiếm.

cũng Xem câu hỏi này về UID, mà đang ở trong một tình huống tương tự: Firebase returns multiple IDs, Which is unique one?

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