はスウィフト3.1とともにのXcode 8.3のコードを働いている:
は、Facebookのデータを取得するには、次の手順を実行します -
ステップ1:
import FBSDKCoreKit
import FBSDKLoginKit
ステップ2:デリゲートに準拠します。
ステップ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()
}
})
}
}
このコメントはお気軽にご利用ください。ありがとう
あなたは社会的データを正しく取得していますか? –
はい私は正しく取得していますが、セッションが2つ作成されるかどうかは疑問です。 –
なぜ2つの異なるセッションが必要です –