解析 Facebook logInInBackgroundWithReadPermissions (Swift)
Posted
技术标签:
【中文标题】解析 Facebook logInInBackgroundWithReadPermissions (Swift)【英文标题】:Parse Facebook logInInBackgroundWithReadPermissions (Swift) 【发布时间】:2015-04-12 05:00:22 【问题描述】:我已成功设置 Parse (1.7.1) SDK 和 Facebook(v4) SDK,设置桥接头文件和 AppDelegate.swift。现在在我的 ViewController 中,我正在尝试创建一个 Facebook 登录,并且我正在尝试使用'Parse ios Documentation - Facebook SignUp & Login' 中给出的代码。
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions,
(user: PFUser!, error: NSError!) -> Void in
if let user = user
if user.isNew
println("User signed up and logged in through Facebook!")
else
println("User logged in through Facebook!")
else
println("Uh oh. The user cancelled the Facebook login.")
)
但是,当我将它粘贴到我的 ViewController.swift > ViewDidLoad 中时,我收到了这个错误:
- Extra argument in call // for at the first line
谁能帮我解决这个问题?
编辑:给出的脚本在语法方面对我有用,但是,现在我不断收到“呃,不。用户取消了 Facebook 登录。”甚至在它请求许可之前;虽然 facebook 页面仍在加载.. 我正在尝试的用户已经被这个特定的应用程序接受。 看一看: http://imgur.com/5yDs1s1
【问题讨论】:
【参考方案1】:当我升级到 swift 1.2 时,我遇到了同样的问题。似乎与新编译器的某种更严格的语法检查有关。此更改对我有用:
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions)
(user: PFUser?, error: NSError?) -> Void in
if let user = user
if user.isNew
println("User signed up and logged in through Facebook!")
else
println("User logged in through Facebook!")
else
println("Uh oh. The user cancelled the Facebook login.")
【讨论】:
我正要开始认为这个问题与我有关.. 可能 Parse 文档和 Swift 1.2 存在问题 为了清楚起见,您将 PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions, (user: PFUser!, error: NSError!) -> Void in 替换为 PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) (user: PFUser? , 错误: NSError?) -> Void in 这对我来说用 swift 1.2 工作得很好 语法现在工作正常;但是我得到“哦,哦。用户取消了 Facebook 登录。”在控制台中甚至在 Facebook 登录页面打开之前(在我被定向到 Safari 中的 Facebook 页面之前)。为了清楚起见,我的代码放在 ViewDidLoad t 为我工作。可以延迟通话吗?我有一个链接到一个按钮的呼叫。我注意到您正在自动登录(应该没问题)。我认为最新版本还有其他一些登录错误。例如,我也遇到这种情况:developers.facebook.com/bugs/1139436116081834 太棒了!我想知道您在“自动登录”场景中遇到的情况是否与我在之前评论中发布的错误有关?【参考方案2】:我通过在 ViewDidLoad 中添加此代码找到了解决方法:
if PFUser.currentUser() != nil
self.performSegueWithIdentifier("loginSegue", sender: self)
一起放置在按钮中:
@IBAction func Facebook(sender: AnyObject)
var permissions = ["public_profile"]
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) (user: PFUser?, error: NSError?) -> Void in
if let user = user
if user.isNew
println("User signed up and logged in through Facebook!")
self.facebookButton.alpha = 0
self.performSegueWithIdentifier("signUp", sender: self)
else
println("User logged in through Facebook!")
self.facebookButton.alpha = 0
let currentUser = PFUser.currentUser()
self.performSegueWithIdentifier("loginSegue", sender: self)
else
println("Uh oh. The user cancelled the Facebook login.")
println("User cancelled")
也在 App Delegate 中:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
// Override point for customization after application launch.
Parse.setApplicationId("###",
clientKey: "###")
PFFacebookUtils.initializeFacebookWithApplicationLaunchOptions(launchOptions)
PFUser.enableRevocableSessionInBackground()
return true
和
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject?) -> Bool
return FBSDKApplicationDelegate.sharedInstance().application(application,
openURL: url,
sourceApplication: sourceApplication,
annotation: annotation)
桥接头:
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <ParseFacebookUtilsV4/PFFacebookUtils.h>
#import <Parse/Parse.h>
#import <Bolts/Bolts.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
我不知道它有多真实,但它解决了我的问题
【讨论】:
【参考方案3】:我遇到了同样的问题,但是代码在更改为后对我有用:
PFFacebookUtils.logInInBackgroundWithReadPermissions(permissions) (user: PFUser?, error: NSError?) -> Void in
【讨论】:
语法现在工作正常;但是我得到“哦,哦。用户取消了 Facebook 登录。”在控制台中甚至在 Facebook 登录页面打开之前(在我被定向到 Safari 中的 Facebook 页面之前)。为了清楚起见,我的代码放在 ViewDidLoad.. 这和我的回答有什么不同吗? 没有。我说语法是有效的,所以应用程序没有崩溃。问题是我得到了第三个条件,即“呃不”部分。显然,here too。你的那个工作正常并且你让用户登录吗? 你发现了吗?我大部分时间都在关注这个问题。 Senty 回复的第一个答案为我提供了解决方案:这需要在 IBAction 的范围内才能工作(它在 viewDidLoad 中不起作用)。以上是关于解析 Facebook logInInBackgroundWithReadPermissions (Swift)的主要内容,如果未能解决你的问题,请参考以下文章