在 Swift 中使用 Parse 登录 Facebook
Posted
技术标签:
【中文标题】在 Swift 中使用 Parse 登录 Facebook【英文标题】:Facebook login with Parse in Swift 【发布时间】:2014-09-27 02:19:58 【问题描述】:我正在尝试使用 Parse 创建 Facebook 登录。请查看我的应用代理代码:
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:.
这是我的桥接头(我认为没问题):
#import <Parse/Parse.h>
#import "BMParseManager.h"
#import <FacebookSDK/FacebookSDK.h>
#import <ParseFacebookUtils/PFFacebookUtils.h>
我现在正处于编写视图控制器的阶段。
我在 Objective-C 中在线找到了这个示例,所以我猜我是否可以将其转换为 swift 它会正常工作吗? (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!")
)
桥接头中的导入还不够吗?如何让视图控制器识别我将其导入桥接头 - 或者我应该在其他地方做些什么?
【问题讨论】:
【参考方案1】:好像你需要先定义你的权限。
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.")
如果你正确地导入了你的头文件,当你调用 parse/facebook 函数时它应该不会在 Xcode 中显示错误。
【讨论】:
【参考方案2】:您收到错误是因为编译器需要一个声明,即变量声明或方法声明。
看起来您在类中直接有 PFFacebookUtils.loginWithPermission(...) 代码。你需要把它放在一个方法中。例如:
import UIKit
class FBLoginViewController: UIViewController
func login()
//
PFFacebookUtils.logInWithPermissions(permissions,
//
)
【讨论】:
以上是关于在 Swift 中使用 Parse 登录 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS9 和 Swift2 中使用 Parse 登录 Facebook
使用 Swift 3 和 iOS 在发送到 Parse Server 的 authdata 对象中使用来自 google 登录的哪个 authdata