IOS Swift 和 Facebook SDK
IOS Swift and Facebook SDK
首先让我道歉,只是学习swift,所以我不是100%在做我正在做的事情。我找到了很多关于在 swift 中集成 facebook 登录的教程,并且在应用程序中似乎可以正常工作,但似乎我的代表从未被调用过。我期望发生的是当用户登录时应该发生两件事。
1) Facebook 的登录按钮应更改为注销按钮。
2) 控制台命令应该打印我登录的信息,最后是用户信息。
ViewController Class 是:
class ViewController: UIViewController,FBLoginViewDelegate {
@IBOutlet var fbLoginView : FBLoginView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.fbLoginView.delegate = self
self.fbLoginView.readPermissions = ["public_profile", "email", "user_friends"]
}
// Facebook Delegate Methods
func loginViewShowingLoggedInUser(loginView : FBLoginView!) {
println("User Logged In")
println("This is where you perform a segue.")
}
func loginViewFetchedUserInfo(loginView : FBLoginView!, user: FBGraphUser){
println("User Name: \(user.name)")
}
func loginViewShowingLoggedOutUser(loginView : FBLoginView!) {
println("User Logged Out")
}
func loginView(loginView : FBLoginView!, handleError:NSError) {
println("Error: \(handleError.localizedDescription)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
AppDelegate 部分 是:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
FBLoginView.self
FBProfilePictureView.self
func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool {
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication)
return wasHandled
}
return true
}
如您所见,其中大部分直接来自教程,但无法正常工作。我已经配置了 info.plist,FBLoginView 出现并通过了整个身份验证,但控制台上没有任何打印,按钮也没有改变。
当我再次尝试单击它时,我已经获得应用程序授权,这应该意味着授权成功,但我的应用程序中没有任何触发。
我确信我的 appdelegate 可能有问题,但我是 swift 的新手,我不知道是什么..
我建议您检查以下步骤:
- 在你的 VC class 中,导入 FacebookSDK 语句和 FBLoginViewDelegate ?
- 你的出口应该是:
//FB outlet
@IBOutlet var fbLoginView: FBLoginView
- 在您的 AppDelegate.swift 中还导入了 FacebookSDK?
- 你的 AppDelegate.swift 中的函数中有一个函数。它应该是:
import FacebookSDK
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//FB implementation
FBLoginView.self
FBProfilePictureView.self
return true
}
//FB Method handles what happens after authentication
func application (application:UIApplication, openURL url:NSURL, sourceApplication:NSString?, annotation:AnyObject) -> Bool {
//test var
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication)
// attempt to extract a token from the url
return wasHandled
}
Facebook 作为已更改的 SDK。请找到最新的解决方案here
http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/
首先让我道歉,只是学习swift,所以我不是100%在做我正在做的事情。我找到了很多关于在 swift 中集成 facebook 登录的教程,并且在应用程序中似乎可以正常工作,但似乎我的代表从未被调用过。我期望发生的是当用户登录时应该发生两件事。
1) Facebook 的登录按钮应更改为注销按钮。
2) 控制台命令应该打印我登录的信息,最后是用户信息。
ViewController Class 是:
class ViewController: UIViewController,FBLoginViewDelegate {
@IBOutlet var fbLoginView : FBLoginView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.fbLoginView.delegate = self
self.fbLoginView.readPermissions = ["public_profile", "email", "user_friends"]
}
// Facebook Delegate Methods
func loginViewShowingLoggedInUser(loginView : FBLoginView!) {
println("User Logged In")
println("This is where you perform a segue.")
}
func loginViewFetchedUserInfo(loginView : FBLoginView!, user: FBGraphUser){
println("User Name: \(user.name)")
}
func loginViewShowingLoggedOutUser(loginView : FBLoginView!) {
println("User Logged Out")
}
func loginView(loginView : FBLoginView!, handleError:NSError) {
println("Error: \(handleError.localizedDescription)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
AppDelegate 部分 是:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
FBLoginView.self
FBProfilePictureView.self
func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool {
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication)
return wasHandled
}
return true
}
如您所见,其中大部分直接来自教程,但无法正常工作。我已经配置了 info.plist,FBLoginView 出现并通过了整个身份验证,但控制台上没有任何打印,按钮也没有改变。
当我再次尝试单击它时,我已经获得应用程序授权,这应该意味着授权成功,但我的应用程序中没有任何触发。
我确信我的 appdelegate 可能有问题,但我是 swift 的新手,我不知道是什么..
我建议您检查以下步骤: - 在你的 VC class 中,导入 FacebookSDK 语句和 FBLoginViewDelegate ? - 你的出口应该是:
//FB outlet
@IBOutlet var fbLoginView: FBLoginView
- 在您的 AppDelegate.swift 中还导入了 FacebookSDK? - 你的 AppDelegate.swift 中的函数中有一个函数。它应该是:
import FacebookSDK
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
//FB implementation
FBLoginView.self
FBProfilePictureView.self
return true
}
//FB Method handles what happens after authentication
func application (application:UIApplication, openURL url:NSURL, sourceApplication:NSString?, annotation:AnyObject) -> Bool {
//test var
var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication)
// attempt to extract a token from the url
return wasHandled
}
Facebook 作为已更改的 SDK。请找到最新的解决方案here
http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/