Swift和解析(以及xCode)问题
Parse和Swift出现了一些问题。 我正在尝试将Facebook登录与解析类PFFacebookUtils一起使用。 这就是代码:Swift和解析(以及xCode)问题,xcode,facebook,swift,login,parse-platform,Xcode,Facebook,Swift,Login,Parse Platform,Parse和Swift出现了一些问题。 我正在尝试将Facebook登录与解析类PFFacebookUtils一起使用。 这就是代码: // LOG IN or SIGN UP with FACEBOOK @IBAction func FacebookLogin() { PFFacebookUtils.logInWithPermissions(permissions, {(user: PFUser!, error: NSError!) -> Void in if
// LOG IN or SIGN UP with FACEBOOK
@IBAction func FacebookLogin() {
PFFacebookUtils.logInWithPermissions(permissions, {(user: PFUser!, error: NSError!) -> Void in
if error == nil {
if user == nil {
NSLog("Uh oh. The user cancelled the Facebook login.")
let userCancelledAlert = UIAlertController(title: "Error", message: "You cancelled the Facebook Login", preferredStyle: .Alert)
let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
userCancelledAlert.addAction(okButton)
let cancelButton = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
userCancelledAlert.addAction(cancelButton)
self.presentViewController(userCancelledAlert, animated: true, completion: nil)
} else if user.isNew {
NSLog("User signed up and logged in through Facebook!")
FBRequestConnection.startWithGraphPath("me?fields=email", completionHandler: { (connection, result, error) -> Void in
if error == nil {
let fbGraphicObject = result as FBGraphObject
println(fbGraphicObject)
}
})
} else {
NSLog("User logged in through Facebook!")
dispatch_async(dispatch_get_main_queue(), { () -> Void in
var homeViewController = self.storyboard?.instantiateViewControllerWithIdentifier("homePage") as HomeViewController
self.presentViewController(homeViewController, animated: true, completion: nil)
})
// end login (success)
}
} else { // if login doesnt work
println(error!)
/*
let facebookError = UIAlertController(title: "Error", message: "Cant connect to Facebook, check your connectivity", preferredStyle: .Alert)
let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
facebookError.addAction(okButton)
let cancelButton = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
facebookError.addAction(cancelButton)
self.presentViewController(facebookError, animated: true, completion: nil)
*/
}
})
}
所以现在我的问题是:为什么我在注册时看不到什么是权限?
我的意思是,权限是一个数组
let permissions = ["email","user_birthday"]
但是,当我注册时,消息是这样的:“[APP-NAME]想要访问你的基本信息和朋友列表。
为什么不是电子邮件或用户的生日。
那么,我如何在我的解析数据库中存储这些信息呢?我的意思是,我看到了id、用户名、密码(显然,我没有)、authData等等。
我有email字段,但它是空的。
我猜密码有问题,有人能找到吗?
最后,我不知道为什么,但是解析类的xCode自动完成(我使用的是Swift)不起作用,几天前就成功了。我也在做同样的事情,试图让Parse将Facebook电子邮件存储为用户名,而不是自动生成的id。自从Facebook将Graph API更新为v2.0以来,似乎没有多少东西可以告诉你如何做。这就是我所做的: 首先,我设置了从Facebook检索电子邮件的适当权限。这是通过“didLoginUser”方法完成的 其次,我发现了这个stackoverflow,它可以帮助您进行FB Graph API调用,然后使用所需的值更新Parse PFUser对象: 我按如下方式设置呼叫:
if (FBSDKAccessToken.currentAccessToken() != nil){
var userProfileRequestParams = [ "fields" : "id, name, email"]
let userProfileRequest = FBSDKGraphRequest(graphPath: "me", parameters: userProfileRequestParams)
let graphConnection = FBSDKGraphRequestConnection()
graphConnection.addRequest(userProfileRequest, completionHandler: { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if(error != nil){
println(error)
}
else {
let fbEmail = result.objectForKey("email") as! String
let fbUserId = result.objectForKey("id") as! String
if(fbEmail != "") {
PFUser.currentUser()?.username = fbEmail
PFUser.currentUser()?.saveEventually(nil)
}
println("Email: \(fbEmail)")
println("FBUserId: \(fbUserId)")
}
})
graphConnection.start()
}
我把这个密码放进去了
func logInViewController(logInController:PFLogInViewController,didLogInUser用户:PFUser){
如果你对这一部分有疑问,看看这段视频,它有一个类似的想法,但在Twitter上
希望这对某人有所帮助。我在这上面花了将近5个小时。在进入带有权限的登录之前,你能
println(权限)
看看里面有什么吗?至于XCode,它可能与@BabyAzerty有关,权限包含“[电子邮件,用户\u生日]是的,我以前读过这篇文章,但这不是我的问题。我没有任何消息或黑色窗口。简单地说,xCode编辑器没有向我建议任何有关解析框架(类、方法或属性)的内容
if (FBSDKAccessToken.currentAccessToken() != nil){
var userProfileRequestParams = [ "fields" : "id, name, email"]
let userProfileRequest = FBSDKGraphRequest(graphPath: "me", parameters: userProfileRequestParams)
let graphConnection = FBSDKGraphRequestConnection()
graphConnection.addRequest(userProfileRequest, completionHandler: { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if(error != nil){
println(error)
}
else {
let fbEmail = result.objectForKey("email") as! String
let fbUserId = result.objectForKey("id") as! String
if(fbEmail != "") {
PFUser.currentUser()?.username = fbEmail
PFUser.currentUser()?.saveEventually(nil)
}
println("Email: \(fbEmail)")
println("FBUserId: \(fbUserId)")
}
})
graphConnection.start()
}