2014-09-27 66 views
0

我试图创建一个Facebook登录与解析。请看看我的应用程序委托的代码:Facebook登录使用Parse斯威夫特

import UIKit 

    @UIApplicationMain 
    class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // verride point for customiztion after application launch. 
     PFFacebookUtils.initializeFacebook() 
    Parse.setApplicationId("REMOVED", clientKey:"REMOVED") 

    return true 
} 
func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String, 
    annotation: AnyObject?) -> Bool { 
     return FBAppCall.handleOpenURL(url, sourceApplication:sourceApplication, 
      withSession:PFFacebookUtils.session()) 
} 


func applicationWillResignActive(application: UIApplication) { 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
} 

func applicationDidEnterBackground(application: UIApplication) { 
    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 
} 

func applicationWillEnterForeground(application: UIApplication) { 
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. 
} 

func applicationDidBecomeActive(application: UIApplication) { 
    FBAppCall.handleDidBecomeActiveWithSession(PFFacebookUtils.session()) 

    // 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. 
} 

func applicationWillTerminate(application: UIApplication) { 

    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 

} 

这里是我的桥接报头(我认为这是一切OK):

#import <Parse/Parse.h> 
    #import "BMParseManager.h" 
    #import <FacebookSDK/FacebookSDK.h> 

    #import <ParseFacebookUtils/PFFacebookUtils.h> 

我现在是在编码我的视图控制器的阶段。

我在Objective-C中发现这个例子在网上,所以我猜,如果我能转换成快捷这一点,将正常工作? (登录部分this page。)

我收到一个错误PFFacebookUtils:“预期声明”。这是在我看来控制器:

import UIKit 

    class FBLoginViewController: UIViewController {  

PFFacebookUtils.logInWithPermissions(permissions, { 
(user: PFUser!, error: NSError!) -> Void in 
if user == nil { 
NSLog("Uh oh. The user cancelled the Facebook login.") 
} else if user.isNew { 
NSLog("User signed up and logged in through Facebook!") 
} else { 
NSLog("User logged in through Facebook!") 
} 
}) 

桥接头中的导入不够?我怎样才能让视图控制器识别我将它导入桥接头 - 或者我应该在其他地方做些什么?

回答

0

,因为编译器期望的声明你得到的错误,这是一个变量的声明或方法声明。

看起来你有直接的类内PFFacebookUtils.loginWithPermission(...)代码。你需要把它放在一个方法里面。例如:

import UIKit 

class FBLoginViewController: UIViewController { 

    func login() { 
     // 
     PFFacebookUtils.logInWithPermissions(permissions, { 
      // 
     } 
    } 
}) 
2

好像你需要先定义你的权限。

var permissions = ["public_profile"] 


    PFFacebookUtils.logInWithPermissions(permissions, { 
     (user: PFUser!, error: NSError!) -> Void in 
     if user == nil { 
      NSLog("Uh oh. The user cancelled the Facebook login.") 

如果导入你的头,当你调用解析/ Facebook的功能是否正确,应该显示在Xcode中没有错误。