所以我目前正在设计一个应用程序,并正在进行帐户注册。我已经实现了Facebook登录,但我在获取用户的Facebook信息并将其传输到下一页时遇到了问题,在下一页中,理想情况下,name和email字段将填充从Facebook接收到的值。
Facebook登录的初始页面如下所示:

class RegisterVC: UIViewController, FBSDKLoginButtonDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

    let loginButton = FBSDKLoginButton()
    view.addSubview(loginButton)
    loginButton.frame = CGRect(x: 82, y: 325, width: view.frame.width - 210, height: 59)

    loginButton.delegate = self
}

func loginButtonDidLogOut(_ loginButton: FBSDKLoginButton!) {
    print("Did log out of facebook")
}

func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
    if error != nil {
        print(error)
        return
    }
    print("Successfully logged in")

    FBSDKGraphRequest(graphPath: "/me", parameters: ["fields": "id, name, email"]).start {(connection, result, err) in
        if err != nil {
            print("Failed to start graph request", err)
            return
        } else {

            guard let data = result as? [String:Any] else {return}

            let fbEmail = data["email"]
            let fbName  = data["name"]
        }

        print(result)
    }

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    //get destination view an set the fullname

        let vc = segue.destination as? CreateAccountVC
        vc?.email = self.fbEmail
        vc.fullname = self.fbName

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

下一个视图控制器(一个典型的注册页面)有以下文本字段:
@IBOutlet weak var fullname: UITextField!
@IBOutlet weak var username: UITextField!
@IBOutlet weak var age: UITextField!
@IBOutlet weak var email: UITextField!
@IBOutlet weak var verifyEmail: UITextField!
@IBOutlet weak var password: UITextField!
@IBOutlet weak var verifyPassword: UITextField!

我不知道如何从Facebook获取这些值并将它们放入这些文本输入框中。我是一个非常新的编程,所以任何帮助将非常感谢,谢谢!

最佳答案

首先,将FB值存储在稍后可以访问的var中。
接下来,可以在转换之前为下一个视图设置值。例如,如果使用segue,可以在prepareForSegue中执行此操作,如下所示:

class RegisterVC: UIViewController, FBSDKLoginButtonDelegate {

var fbName:String?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  //get destination view an set the fullname
  let vc=segue.destination as? MyCustomVC
  vc.fullName=self.fbName
}

10-07 19:51
查看更多