将数据传递给从Facebook获取的模型类的视图控制器登录
问题描述:
我已经创建了一个用于Facebook登录的公共类,并且想要从登录到视图控制器后调用或请求的位置返回数据。下面是我的代码:将数据传递给从Facebook获取的模型类的视图控制器登录
static func loginFB(vc: UIViewController) -> AnyObject
{
var dict = [String : AnyObject]()
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logIn(withReadPermissions: ["email"], from: vc) { (result, error) in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result!
if fbloginresult.grantedPermissions != nil {
if(fbloginresult.grantedPermissions.contains("email"))
{
if((FBSDKAccessToken.current()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
dict = result as! [String : AnyObject]
print(result!)
let strEmail = dict["email"] as! String
let strFirstName = dict["first_name"] as! String
let strLastName = dict["last_name"] as! String
Constants.userDefault.defaults.set(strEmail, forKey: "email")
Constants.userDefault.defaults.set(strFirstName, forKey: "first_name")
Constants.userDefault.defaults.set(strLastName, forKey: "last_name")
//return dict
}
})
}
}
}
}
}
print(dict)
return dict as AnyObject
}
请建议
答
撰写完成的块并通过字典作为在封闭的参数。
static func loginFB(vc: UIViewController,completion : @escaping ([String : AnyObject]) ->())
{
var dict = [String : AnyObject]()
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logIn(withReadPermissions: ["email"], from: vc) { (result, error) in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result!
if fbloginresult.grantedPermissions != nil {
if(fbloginresult.grantedPermissions.contains("email"))
{
if((FBSDKAccessToken.current()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).start(completionHandler: { (connection, result, error) -> Void in
if (error == nil){
dict = result as! [String : AnyObject]
print(result!)
let strEmail = dict["email"] as! String
let strFirstName = dict["first_name"] as! String
let strLastName = dict["last_name"] as! String
Constants.userDefault.defaults.set(strEmail, forKey: "email")
Constants.userDefault.defaults.set(strFirstName, forKey: "first_name")
Constants.userDefault.defaults.set(strLastName, forKey: "last_name")
//return dict
completion(dict)
}
})
}
}
}
}
}
print(dict)
}
现在叫它如下图所示
YourViewController.loginFB(vc: instance_of_vc) { (dict) in
print(dict)
}
感谢很多人,救了我的时间,已经花了几个小时就可以了。 –
@ iphone-6:很高兴我可以帮助你:)快乐的编码,永远欢迎:) –