将Facebook数据传输到Firebase

时间:2017-03-10 21:42:14

标签: ios swift facebook facebook-graph-api firebase-realtime-database

在我的登录页面上,我可以选择使用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上为他们创建一个用户帐户。

1 个答案:

答案 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