2014-09-27 88 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中沒有錯誤。