因此,我目前正在设计一个应用程序并正在处理帐户注册。我已经实现了Facebook登录,但是我很难获取用户的Facebook信息并将其传输到下一页,理想情况下,姓名和电子邮件的字段将被从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(s)中,您可以稍后访问。
接下来,您可以在过渡之前设置下一个视图的值。例如,如果您使用的是segue,则可以在Preparforsegue中这样做:
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
}