2017-10-29 22 views
0

こんにちは、私はFirebase Facebook認証をしようとしました。FacebookでのiOS firebase認証

しかし、いくつかの問題があります。私はFirebase、 によってFacebookのメールを取得することができますが、私は、ログイン成功後にビューを変更した場合、私はFirebase認証コンソール上で私のFacebookの電子メールをチェックすることができ

Auth.auth().currentUser?.email 

によってFacebookのメールを取得することはできません。

Googleと通常のメール認証は動作しますが、Facebookはそうではありません。

これは時々Firebase認証は細部のこれらの種類を返さない私のコード

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

下の下の画像に示すように、Firebaseデータベース内のすべての詳細を格納することをお勧めします
関連する問題