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)
}
}
}
}