我在使用Facebook SDK编译iOS 8.4时出现问题,所以我升级到Xcode 7.1并使用Facebook Sdk 4.6。我正在按照以下代码进行登录。它给了我奇怪的体验,有时,它打开了SafariViewController,有时它打开了弹出视图和SafariViewController,有时它只打开弹出视图。
在任何一种情况下,我尝试登录我都不会在
中获取数据func loginButton(loginButton:FBSDKLoginButton!,didCompleteWithResult 结果:FBSDKLoginManagerLoginResult!,错误:NSError!)
或
fbLoginManager.logInWithReadPermissions([“email”],fromViewController:self,handler:{(result,error) - > Void in if(error == nil)
我已经关注并添加了NSTransportExceptions
代码
在ViewDidload中我定义了这个
fblogin.delegate = self
fblogin.readPermissions = ["public_profile", "email", "user_friends"]
fblogin是loginButton
@IBAction func loginFb(sender:AnyObject)
{
let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self, handler: { (result, error) -> Void in
if (error == nil){
let fbloginresult : FBSDKLoginManagerLoginResult = result
if fbloginresult.grantedPermissions != nil { //Here we have to check that the set contains value or not
if(fbloginresult.grantedPermissions.contains("email"))
{
self.getFBUserData()
//fbLoginManager.logOut()
}
}
}
})
}
func getFBUserData(){
NSLog("Called")
if((FBSDKAccessToken.currentAccessToken()) != nil){
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, first_name, last_name, picture.type(large), email"]).startWithCompletionHandler({ (connection, result, error) -> Void in
if (error == nil){
self.dict = result as! NSDictionary
print(result)
print(FBSDKAccessToken.currentAccessToken().tokenString)
//NSLog(self.dict.objectForKey("picture")?.objectForKey("data")?.objectForKey("url") as! String)
}
})
}
}
我遇到Facebook is not returning data in didCompleteWithResult in iOS 9问题所以我升级到了Xcode 7
答案 0 :(得分:1)
为了提出有效的字段请求,他们需要没有空格,例如 " ID,名字,姓氏,电子邮件"
关于切换到Facebook应用程序而不是显示SFSafariViewController,您需要在v4.6之前使用任何Facebook SDK,他们在此更改了