Ios Firebase 3.x-Facebook登录
在Ios Firebase 3.x-Facebook登录,ios,swift,facebook,firebase,firebase-authentication,Ios,Swift,Facebook,Firebase,Firebase Authentication,在Firebase 2.5.1中,我曾经这样做过,它正在工作: @IBAction func facebookLoginDidTouch(sender: AnyObject) { let facebookLogin = FBSDKLoginManager() facebookLogin.logInWithReadPermissions(["public_profile", "email"], fromViewController: self, handler: { (fa
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!")
}
})
}
})
}
成功登录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!")
}
})
}
})
}
在其他部分…添加这些内容<代码>如果facebookError!=无{print(“Facebook登录失败。错误\(facebookError)”)}如果facebookResult.isCancelled{print(“Facebook登录被取消”)}否则{让凭证…}在其他部分…添加此内容<代码>如果facebookError!=无{print(“Facebook登录失败。错误\(facebookError)”)}如果facebookResult.isCancelled{print(“Facebook登录被取消”)}否则{让凭证…}在“你的firebase身份验证材料”中,我应该包括其他内容还是你的意思是
let-credential…
内容?在“你的firebase身份验证内容”中,我应该包括其他内容还是你的意思是let-credential…
内容?