gpt4 book ai didi

ios - Firebase 3.x - Facebook 登录

转载 作者:行者123 更新时间:2023-11-28 12:46:56 25 4
gpt4 key购买 nike

Firebase 2.5.1 中,我曾经这样做过,而且它运行良好:

@IBAction func facebookLoginDidTouch(sender: AnyObject) {

let facebookLogin = FBSDKLoginManager()

facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
(facebookResult, facebookError) -> Void in
if facebookError != nil {
print("Facebook login failed. Error \(facebookError)")
} else if facebookResult.isCancelled {
print("Facebook login was cancelled.")
} else {
let accessToken = FBSDKAccessToken.currentAccessToken().tokenString
myRootRef.authWithOAuthProvider("facebook", token: accessToken, withCompletionBlock: { error, authData in

if error != nil {
print("Login failed. \(error)")
} else {
print("Logged in!")
let newUser = [
"provider": user.provider,
"imageUrl": user!.providerData["profileImageURL"] as String, // etc
]
}
})
}
})
}

现在我正尝试在 Firebase 3.x 中实现这一点。但是,我对应该在哪里放置权限和东西感到困惑

这是我目前尝试过的

@IBAction func facebookLoginDidTouch(sender: AnyObject) {

let facebookLogin = FBSDKLoginManager()

let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
if error != nil {
print("Login failed. \(error)")
} else {
print("Logged in!")

let newUser = [
"provider": user.provider,
"imageUrl": user!.providerData["profileImageURL"] as String
]
}
})
}

更新:

 facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
(facebookResult, facebookError) -> Void in
if facebookError != nil {
print("Facebook login failed. Error \(facebookError)")
} else if facebookResult.isCancelled {
print("Facebook login was cancelled.")
} else {
// your firebase authentication stuff..

let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
if error != nil {
print("Login failed. \(error)")
} else {
print("Logged in!")

let userID = Helpers.extractUID(user!)

let rootRef = FIRDatabase.database().reference()
let userRef = rootRef.child("users").child(userID)

userRef.observeEventType(.Value, withBlock: { snapshot in
if snapshot.value is NSNull {
let newUser = [
"providerId": user?.providerID,
"displayName": user?.displayName,
]
userRef.setValue((newUser as! AnyObject))
// perform segue
}
})
}
})

最佳答案

在你成功登录 facebook 并取回用户数据后......你必须添加 firebase 身份验证之类的东西

 @IBAction func facebookLoginDidTouch(sender: AnyObject) {

let facebookLogin = FBSDKLoginManager()

facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: {
(facebookResult, facebookError) -> Void in
if facebookError != nil {
print("Facebook login failed. Error \(facebookError)")
} else if facebookResult.isCancelled {
print("Facebook login was cancelled.")
} else {
// your firebase authentication stuff..

let credential = FIRFacebookAuthProvider.credentialWithAccessToken(FBSDKAccessToken.currentAccessToken().tokenString)

FIRAuth.auth()?.signInWithCredential(credential) { (user, error) in
if error != nil {
print("Login failed. \(error)")
} else {
print("Logged in!")

}
})
}
})
}

关于ios - Firebase 3.x - Facebook 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com