我正在尝试使用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())
答案 0 :(得分:0)
导致问题的代码是这样的。 会话不存在已经存在,因此在打开没有异常日志的safari时调用close会导致崩溃。然后回到应用程序,它将从头开始应用程序,但由于它将返回登录页面,很难说。
在调用clode之前需要检查会话是否存在。
func applicationDidEnterBackground(application: UIApplication) {
PFFacebookUtils.session().close()
}