2016-03-15 38 views
1

不顯示我已經用火力來實現電子郵件和Facebook登錄我的應用程序。我的代碼如下:Facebook登錄的用戶數據在火力控制檯

對於FB登錄:

FireBaseHelper.fireBaseHelper.BASE_REF.authWithOAuthProvider("facebook", token: "123") { (error, data) -> Void in 

     APP_DELEGATE.hideActivityIndicator() 
     if error != nil { 
      print(error) 
      self.loginErrorAlert("Oops!", message: "Check your username and password.") 
     } else { 

      // Be sure the correct uid is stored. 

      NSUserDefaults.standardUserDefaults().setValue(data.uid, forKey: "uid") 

      // Enter the app! 

      self.performSegueWithIdentifier("CurrentlyLoggedIn", sender: nil) 
     } 
    } 

對於電子郵件註冊:

 let username = usernameField.text 
    let email = emailField.text 
    let password = passwordField.text 

    if username != "" && email != "" && password != "" { 

     APP_DELEGATE.showActivityIndicator() 

     FireBaseHelper.fireBaseHelper.BASE_REF.createUser(email, password: password, withValueCompletionBlock: { error, result in 



      if error != nil { 
       APP_DELEGATE.hideActivityIndicator() 
       // There was a problem. 
       self.signupErrorAlert("Oops!", message: "Having some trouble creating your account. Try again.") 

      } else { 

       // Create and Login the New User with authUser 
       FireBaseHelper.fireBaseHelper.BASE_REF.authUser(email, password: password, withCompletionBlock: { 
        err, authData in 

        let user = ["provider": authData.provider!, "email": email!, "username": username!] 

         FireBaseHelper.fireBaseHelper.USER_REF.childByAppendingPath(authData.uid).setValue(user, withCompletionBlock: { (error, firebase) -> Void in 

         if error != nil { 
          APP_DELEGATE.hideActivityIndicator() 
          self.signupErrorAlert("Oops!", message: "Having some trouble creating your account. Try again.") 

         }else 
         { 
          APP_DELEGATE.hideActivityIndicator() 
          // Store the uid for future access - handy! 
          NSUserDefaults.standardUserDefaults().setValue(result ["uid"], forKey: "uid") 

          // Enter the app. 
          self.performSegueWithIdentifier("NewUserLoggedIn", sender: nil) 

         } 
         }) 
       }) 
      } 
     }) 

    }else 
    { 
     signupErrorAlert("Oops!", message: "Don't forget to enter your email, password, and a username.") 
    } 

和輔助類代碼:

class FireBaseHelper: NSObject { 

    static let fireBaseHelper = FireBaseHelper() 

    private var _BASE_REF = Firebase(url: "https://poc-demoApp.firebaseio.com") 
    private var _USER_REF = Firebase(url: "https://poc-demoApp.firebaseio.com/users") 
var BASE_REF: Firebase { 
     return _BASE_REF 
    } 

    var USER_REF: Firebase { 
     return _USER_REF 
    } 

var CURRENT_USER_REF: Firebase { 
     let userID = NSUserDefaults.standardUserDefaults().valueForKey("uid") as! String 

     let currentUser = Firebase(url: "\(BASE_REF)").childByAppendingPath("users").childByAppendingPath(userID) 

     return currentUser! 
    } 
} 

問題是當我註冊與電子郵件用戶,我可以看到火力的儀表板,用戶數據,當我用FB註冊,該用戶的數據不被DISPL在儀表板上玩耍,讓我知道什麼是問題。我錯過了什麼?它顯示FB註冊成功

回答

3

火力地堡只存儲電子郵件+密碼的用戶的列表。它不存儲任何數據,爲與社會提供商(如Facebook)簽署了您的應用程序的用戶。所以沒有什麼可顯示在儀表盤火力地堡的那些用戶。

如果你想存儲有關Facebook用戶信息數據庫,看到storing user data部分。

+0

你當然?我堅持收到電子郵件和其他東西。 –

0

我遇到同樣的問題,我發現在用戶成功登錄Facebook之後,您需要獲取用於登錄用途的訪問令牌,將其交換爲Firebase憑據,並最終使用Firebase進行身份驗證Firebase憑證。

下面是一個例子(不要忘記導入FBSDKLoginKitFirebaseAuth庫):

let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) 

Auth.auth().signIn(with: credential) { (user, error) in 
     if let error = error { 
     print("Facebook authentication with Firebase error: ", error) 
     return 
     } 
     print("User signed in!") // After this line the Facebook login should appear on your Firebase console 
    } 

這裏是Facebook登錄後控制檯的屏幕截圖:

enter image description here

相關問題