在我的登录页面上,我可以选择使用Facebook注册。当用户单击我的自定义FB按钮时,此代码将运行
func handleCustomFBLogin() {
FBSDKLoginManager().logIn(withReadPermissions: ["email"], from: self) { (result, err) in
if FBSDKAccessToken.current() != nil {
print("user is logged in")
}else{
print("user is not logged in")
}
}
}
我想要实现的是,当用户点击Facebook按钮并且他们之前已经登录时,他们将自动登录到Firebase上的用户帐户。我正在考虑创建一个函数来发送graphRequest并获取他们的Facebook帐户上的电子邮件,因为这将填充他们的用户帐户字段。
但是如果用户按下FB按钮并且他们是第一次登录,我希望能够在Firebase上为他们创建一个用户帐户。
答案 0 :(得分:0)
当然...... Firebase让你受到了保护。
在Firebase控制台中启用Facebook登录。
使用Facebook登录时,会向您返回一个令牌。
let credential = FIRFacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString) //this goes in your function you created
然后您就像通常那样使用Firebase进行身份验证:
FIRAuth.auth()?.signIn(with: credential) { (user, error) in
if let error = error {
// ...
return
}
您可以在Firebase的guide后面了解如何执行此操作的详细信息。
编辑:
当firebase为用户创建了一个帐户时,您可以使用回调来获取用户的uid并创建firebase数据库的条目。或者您可以像这样获得当前登录的用户:
let user = FIRAuth.auth()?.currentUser
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
let email = user?.email
let uid = user?.uid
let photoURL = user?.photoURL