2016-05-21 6 views
0

Я играю с новой версией Firebase SDK и просто хочу добавить Facebook Login. Я могу регистрировать пользователей через Facebook, но это не создает запись в базе данных реального времени. В предыдущей версии Firebase было явно объяснено, что логин не создает ссылку на пользователя в базе данных и что мы должны были ее сами сохранить, в этой версии он автоматически создает запись, но это не работает для меня , Вот мой код:Facebook Login - Firebase V3

import UIKit 
import Firebase 
import FBSDKCoreKit 
import FBSDKLoginKit 

class ViewController: UIViewController, FBSDKLoginButtonDelegate { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let loginButton = FBSDKLoginButton() 
     loginButton.center = self.view.center 
     self.view.addSubview(loginButton) 
     loginButton.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) { 
     if let error = error { 
      print(error.localizedDescription) 
      return 
     } else { 
      let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString) 
      FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in 
       if let error = error { 
        print(error.localizedDescription) 
       } else { 
        print("successfullyAuthenticated") 
       } 
      } 
     } 
    } 

    func loginButtonDidLogOut(loginButton: FBSDKLoginButton!) { 
     print("logged out") 
    } 
} 

ответ

2

Нет, это не создает запись в базе данных Firebase, он создает пользователя в вашем Firebase proyect и он появляется в панели авторизации. Затем вы должны хранить его в базе данных с данными пользователя, которые могут вам понадобиться.

+0

хорошо, небольшое недоразумение с моей стороны тогда, приветствия! Я собираюсь пойти на старый метод с Facebook Manager, а не на кнопку входа в Facebook. – Viro

4

, если вы внимательно посмотрите на код

вы увидите, что он будет вылетать, если кто-то нажмите на кнопку или кнопку Готово отменить, когда страница facebook подтверждение говоря «вы уже утвержденную ..yourappname»

к получить эту страницу логаута от Facebook и попробуйте войти снова

надеюсь, что это поможет вам лучше кода ... им также работает над новым firebase ...

избежать его, как это

 guard let accessToken:FBSDKAccessToken? = FBSDKAccessToken.currentAccessToken() else{ 

      return 
     } 

     if accessToken!.tokenString != nil { 

      let credential = FIRFacebookAuthProvider.credentialWithAccessToken((accessToken?.tokenString)!) 

      FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in 
+0

Благодарим вас за это дополнение, оно действительно порождает фатальную ошибку, если не реализовано. – Viro