首页 文章

使用Facebook进行iOS firebase身份验证

提问于
浏览
0

嗨,我试图使Firebase Facebook身份验证 .

但是有一些问题 . 我可以通过Firebase获得Facebook电子邮件,但如果我在登录成功后更改了视图,我就无法获得Facebook电子邮件

Auth.auth().currentUser?.email

我可以在Firebase身份验证控制台上查看我的Facebook电子邮件 .

谷歌和正常的电子邮件身份验证有效,但Facebook不是 .

这是我的代码

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)

        }
    }
}

}

1 回答

  • 0

    有时,Firebase Auth不会返回这些细节 . 将所有详细信息存储在Firebase数据库中是一种很好的做法,如下图所示 Database.database().reference().child("uid")

    User profile Structure

相关问题