在我的 Xcode 项目中,我已经有一个使用用户创建的用户名和密码的登录功能。现在我想在项目中集成一个 Facebook 登录。我能够编写简单的 Facebook 注册,它将项目连接到他们的 Facebook。在这一步之后,我遇到了两个问题:
要通过 Facebook 注册用户,我需要保存某种形式的唯一标识,以便他们在登录时可以再次使用它。但我不知道这个身份证明是什么,也不知道从哪里得到的。
我只知道如何通过我保存在 parse 中的用户名和密码登录用户,以获取他们的个人资料。这如何与 Facebook 配合使用?
谁能帮我解决这两个问题?
我已经复制了我的 Facebook 登录代码:
@IBOutlet var facebookSignUpButton: FBSDKLoginButton!
var fullnameFB = String()
var emailFB = String()
var isFBSignUp = Bool()
override func viewDidLoad() {
super.viewDidLoad()
signUpWithFacebook()
}
//
// Facebook Sign Up Functions =>
//
func signUpWithFacebook() {
facebookSignUpButton.readPermissions = ["email", "public_profile"]
facebookSignUpButton.delegate = self
self.view.addSubview(facebookSignUpButton)
}
//what to do when logged in
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil { //if theres an error
print(error)
} else if result.isCancelled { // if user cancels the sign up request
print("user cancelled login")
} else {
if result.grantedPermissions.contains("email") {
if let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "email, name"]) {
graphRequest.start(completionHandler: { (connection, result, error) in
if error != nil {
print(error?.localizedDescription ?? String())
} else {
if let userDetails = result as? [String: String]{
print(userDetails)
self.fullnameFB = userDetails["name"]!
self.emailFB = userDetails["email"]!
self.isFBSignUp = true
}
self.performSegue(withIdentifier: "SignUpP2VC", sender: nil)
}
})
}
} else {
print("didnt get email")
createAlert(title: "Facebook Sign Up", message: "To signup with Facebook, we need your email address")
}
}
}
//logout function
func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
print("logged out")
}
最佳答案
如果您使用的是 Parse,则有一个名为 PFFacebookUtils 的帮助程序库处理用户链接
func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
if error != nil { //if theres an error
print(error)
} else if result.isCancelled { // if user cancels the sign up request
print("user cancelled login")
} else {
// TODO: guard against nil => result?.token
PFFacebookUtils.logInInBackground(with: result!.token!) { (user, error) in
if let user = user {
if user.isNew {
print("User signed up and logged in through Facebook!")
} else {
print("User logged in through Facebook!")
}
// Get user email using FBSDKGraphRequest
} else {
print("Error while trying to login using Facebook: \(error?.localizedDescription ?? "---")")
}
}
}
}
关于ios - 将 Facebook 登录与 Parse 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45624497/