解析facebook登录问题?

时间:2015-03-28 01:42:14

标签: ios parse-platform facebook-login

我正在尝试使用Psrse实现facebook登录。 如果用户在iOS设置中登录facebook,则以下代码有效,但如果用户不登录,则无效。

一旦我打电话给logInWithPermissions,safari就会打开facebook,我的委托会被nil用户调用,并且nil错误。当用户登录safari时,它会将用户带回应用程序,application:openURL:sourceApplication被调用,但logInWithPermissions的完成永远不会被触发

花了3天试图解决这个问题。任何建议,将不胜感激。我已经将所有密钥都添加到了info.plist中

此处有一些副本无法解决问题:iOS/Swift: PFFacebookUtils.logInWithPermissions returns nil user and error

let permissionArray = ["public_profile", "email"]

PFFacebookUtils.logInWithPermissions(permissionArray) { user, error in

     println(user)
     println(error)

}

的appDelegate

func applicationDidBecomeActive(application: UIApplication) {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    FBAppCall.handleDidBecomeActiveWithSession(PFFacebookUtils.session())
}

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {

    return FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication, withSession: PFFacebookUtils.session())
}

编辑:

将此添加到应用程序:openUrl:sourceApplication,所有值都存在并且在登录后有效。

println(url)
println(sourceApplication)
println(PFFacebookUtils.session())

1 个答案:

答案 0 :(得分:0)

导致问题的代码是这样的。 会话不存在已经存在,因此在打开没有异常日志的safari时调用close会导致崩溃。然后回到应用程序,它将从头开始应用程序,但由于它将返回登录页面,很难说。

在调用clode之前需要检查会话是否存在。

func applicationDidEnterBackground(application: UIApplication) {

    PFFacebookUtils.session().close()
}