2016-10-03 5 views
0

私はログインのためのFacebook SDKを使用していますが返されません。問題は、値が返されないことです。graphRequest.startは</p> <p>この私のコードスウィフト3を使用してiOS版ではデータ

import UIKit 

クラスのViewController:のUIViewController {

@IBOutlet weak var email: UITextField! 
@IBOutlet weak var password: UITextField! 
@IBOutlet weak var uLoginButton: UIButton! 

let loginButton: FBSDKLoginButton = { 

    let button = FBSDKLoginButton() 

    button.readPermissions = ["email"] 

    return button; 

}() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    view.addSubview(loginButton); 
    loginButton.center = view.center 
    loginButton.delegate = self 

    if (FBSDKAccessToken.current() != nil) { 
     fetchProfile(); 
    } 

    self.style() 
} 

func fetchProfile(){ 

    let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "email, name, first_name, last_name, picture.type(large)"]) 

    let connection = FBSDKGraphRequestConnection() 

    connection.add(graphRequest, completionHandler: { (connection, result, error) in 

     if error != nil { 

      //do something with error 
      print("No Data returned") 
      print(result) 
     } else { 

      //do something with result 
      print("Data returned") 
      print(result) 

     } 

    }) 

    connection.start() 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func style(){ 
    self.email.layer.cornerRadius = 15; 
    self.password.layer.cornerRadius = 15; 
    self.uLoginButton.layer.cornerRadius = 15; 

} 

}

拡張のViewController:FBSDKLoginButtonDelegateスウィフト3において{

internal func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) { 

    // when the login is correct! 
    print("Success login!"); 
    fetchProfile() 
} 

internal func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) { 
    FBSDKAppEvents.activateApp() 
} 

internal func loginButtonWillLogin(_ loginButton: FBSDKLoginButton!) -> Bool { 
    return true 
} 

}

答えて

0

、THI sはGraph Requestをどのように実行したいかです。

  1. 初期FBSDKGraphRequest
  2. 初期FBSDKGraphRequestConnection
  3. は、接続
  4. スタート接続を要求するための要求を追加します。

ので、

let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields" : "email"]) 
    let connection = FBSDKGraphRequestConnection() 
    connection.add(graphRequest, completionHandler: { (connection, result, error) in 

     if error != nil { 

      //do something with error 

     } else { 

      //do something with result 

     } 

    }) 

    connection.start() 
+0

こんにちは! これは正常に実行されます!しかし、私はデータ(電子メール、user_nameなど)を取得しないでください...私は "print(result)"でテストしていますが、返されたデータはありません –

+0

その場合、facebookユーザーがいない可能性がありますあなたがグラフ要求を呼んでいる時点で。ユーザーがログインする前または後にこれを呼び出していますか? – DevKyle

+0

コードの内容を編集して見てください。 –

関連する問題