在这里与夫特3.1沿工作的代码的Xcode 8.3:
按照这些步骤获得的Facebook数据: -
步骤1:
import FBSDKCoreKit
import FBSDKLoginKit
步骤2:符合委托。
FBSDKLoginButtonDelegate
步骤3:登录按钮IBAction方法。
// Facebook的登录操作
@IBAction func facebookLoginAction(_ sender: Any) {
//Check Internet connection
guard InternetAvailable() else {return}
//Fb login process
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = .native
fbLoginManager.logOut()
fbLoginManager.logIn(withReadPermissions: ["email"], from: self) { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result!
if fbloginresult.isCancelled {
}
else if (fbloginresult.declinedPermissions != nil){
if(fbloginresult.grantedPermissions.contains("email")) {
self.getFBUserData()
}
}
}
}
}
第4步:获取Facebook的数据如下方式。
func getFBUserData(){
//Showing activity indicator
HUD.flash(.image(UIImage.gif(name: "App-Loader")), delay: 100.0)
if((FBSDKAccessToken.current()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"first_name, last_name,email, picture.type(large),gender"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
let newResult = result as AnyObject
let email = newResult["email"] as? String ?? ""
print("Your Email = \(email)")
let firstName = newResult["first_name"] as? String ?? ""
let lastName = newResult["last_name"] as? String ?? ""
print(FBSDKAccessToken.current())
let gender = newResult["gender"] as? String ?? ""
let sex = (gender == "male" ? HCConstants.Gender.MALE : HCConstants.Gender.FEMALE).description
let id = newResult["id"] as? String ?? ""
print("the access token is \(FBSDKAccessToken.current().tokenString)")
let accessToken = FBSDKAccessToken.current().tokenString
self.signInUser()
//Hid PKHUD
HUD.hide()
}
})
}
}
随时对此发表评论,希望能解决您的问题。谢谢
您是否正确获取社交数据? –
是的我正确地得到它,但我怀疑它是否会创建两个会话? –
为什么你需要两个不同的会话 –