2017-10-29 2 views
0

안녕하세요 저는 Firebase Facebook 인증을 시도했습니다.iOS firebase authentication with Facebook

그러나 몇 가지 문제가 있습니다. 나는 중포 기지, 에 의해 페이스 북 이메일을받을 수 있지만 내가 로그인 성공 후보기를 변경할 경우, 나는 중포 기지 인증 콘솔 내 페이스 북 이메일을 확인하실 수 있습니다

Auth.auth().currentUser?.email 

에 의해 페이스 북 이메일을 얻을 수 없습니다.

Google 및 일반 이메일 인증이 작동하지만 페이스 북은 아닙니다.

내 코드

class ViewController: UIViewController, GIDSignInUIDelegate, FBSDKLoginButtonDelegate{ 

// facebook Login 
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult?, error: Error!) { 
    if result?.token == nil {return} 


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


    Auth.auth().signIn(with: credential) { (user, error) in 
     if let error = error { 
      print(error) 
      return 
     } 
    } 

    FBSDKLoginManager().logOut() 
} 


// facebook logout 
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 

} 


@IBOutlet weak var email: UITextField! 
@IBOutlet weak var password: UITextField! 

@IBOutlet weak var facebookLogin: FBSDKLoginButton! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    GIDSignIn.sharedInstance().uiDelegate = self 
    facebookLogin.delegate = self 
    facebookLogin.readPermissions = ["email"] 

    Auth.auth().addStateDidChangeListener { (user, error) in 
     if user != nil { 
      self.performSegue(withIdentifier: "home", sender: nil) 
     } 

    } 
} 


@IBAction func googleSignBtn(_ sender: Any) { 
    GIDSignIn.sharedInstance().signIn() 
} 


@IBAction func emailLogin(_ sender: Any) { 
    Auth.auth().createUser(withEmail: self.email.text!, password: self.password.text!) { (user, error) in 
     if error != nil { 

      Auth.auth().signIn(withEmail: self.email.text!, password: self.password.text!, completion: { (user, error) in 

      }) 

     }else{ 

      let alert = UIAlertController(title: "Alert", message: "Sign up Success!", preferredStyle: UIAlertControllerStyle.alert) 

      alert.addAction(UIAlertAction(title: "Confirm", style: UIAlertActionStyle.default, handler: nil)) 

      self.present(alert, animated: true, completion: nil) 

     } 
    } 
} 

}

답변

0

때때로 중포 기지 인증 세부 이런 종류의를 반환하지 않습니다이다. Database.database().reference().child("uid")

User profile Structure

에서 아래 이미지와 같이 중포 기지 데이터베이스의 모든 세부 사항을 저장하는 것이 좋습니다