我使用以下Pod将我的facebook SDK更新到最新版本(5)
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
这是我更新的Facebook登录功能
let loginManager = LoginManager()
loginManager.loginBehavior = .browser //.native is not supported in new version
loginManager.logIn(permissions: ["publicProfile", "userFriends", "email"], from: self) { (login, error) in
if let e = error {
self.showAlertForError(title: "", msg: e.localizedDescription)
return
}
if let l = login {
if l.declinedPermissions.contains("user_friends") || l.declinedPermissions.contains("email") {
SVProgressHUD.dismiss()
self.showAlertForError(title: "facebook_permission_required_text".localized(), msg: "facebook_permission_allow_text".localized())
return
}
GraphRequest(graphPath: "/me", parameters: ["fields" : "id, email, first_name, last_name"])
.start(completionHandler: { (connection, result, error) in
guard let result = result as? NSDictionary,
let email = result["email"] as? String,
let first_name = result["first_name"] as? String,
let last_name = result["last_name"] as? String,
let user_id_fb = result["id"] as? String else {
SVProgressHUD.dismiss()
}
})
}
}
尝试登录时出现此错误。
iOS SDK
相同的方式发送请求>Graph API
请求的当前方法将custom type-safe API
用于请求。这使您可以更准确地推断graph API
请求的类型,并提供clean API
来使用此数据。
let connection = GraphRequestConnection()
@IBAction private func loginWithReadPermissions() {
let loginManager = LoginManager()
loginManager.logIn(
permissions: [.publicProfile, .userFriends, .email],
viewController: self
) { result in
self.loginManagerDidComplete(result)
}
}
func loginManagerDidComplete(_ result: LoginResult) {
switch result {
case .cancelled:
self.showAlertForError(
title: "Login Cancelled",
message: "User cancelled login."
)
case .failed(let error):
self.showAlertForError(
title: "Login Fail",
message: "Login failed with error \(error)"
)
case .success(let grantedPermissions, _, _):
self.showAlertForError(
title: "Login Success",
message: "Login succeeded with granted permissions: \(grantedPermissions)"
)
connection.add(GraphRequest(graphPath: "/me", parameters: ["fields" : "id, email, first_name, last_name"])) { httpResponse, result, error in
if error != nil {
NSLog(error.debugDescription)
return
}
guard let result = result as? NSDictionary,
let email = result["email"] as? String,
let first_name = result["first_name"] as? String,
let last_name = result["last_name"] as? String,
let user_id_fb = result["id"] as? String else {
SVProgressHUD.dismiss()
}
}
connection.start()
}
}