2015-01-31 3 views
2

Позвольте мне сначала извиниться, просто научиться быстро, поэтому я не на 100% на то, что делаю. Я нашел много учебников по интеграции входа в facebook в swift и имеет то, что, кажется, работает в приложении, но, похоже, мои делегаты никогда не вызываются. То, что я ожидаю, произойдет, когда пользователь войдет в систему, должно произойти 2 вещи.IOS Swift и Facebook SDK

1) Кнопка входа в систему для facebook должна быть изменена на кнопку выхода из системы.
2) Команда консоли должна печатать, что я вошел в систему, и, в конечном счете, информацию о пользователе.

ViewController Класс:

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 и проходит через всю проверку подлинности, но ничего не печатается на консоли, и кнопка не изменяется.
Когда я пытаюсь щелкнуть его снова, я уже получил разрешение на использование приложения, что должно означать, что auth был успешным, но ничего не было вызвано в моем приложении.

Я уверен, что что-то, вероятно, неправильно с моей AppDelegate но, будучи новым для быстры, я не имею понятия, что ..

+0

ли вы получить что-нибудь в журнале? – Jageen

+0

Единственное, что в журнале это консольный вывод: «User Logged Out». Я считаю, что это просто потому, что fbLoginView создается с ошибкой. – Joseph

+0

Когда вы нажимаете в первый раз, для проверки подлинности? и во время этого он записывал что-нибудь? – Jageen

ответ

1

Я хотел бы предложить вам cheking этих шагов: -в классе VC , импортировать заявление FacebookSDK и FBLoginViewDelegate? - розетка должна быть:

//FB outlet 
@IBOutlet var fbLoginView: FBLoginView 

- в вашем AppDelegate.swift, также импортирован FacebookSDK? - у вас есть FUNC в FUNC в вашем AppDelegate.swift.It должно быть:

import FacebookSDK 

@UIApplicationMain класс 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 

} 
+0

Для ясности. Часть, которая исправила это, я имел свои делегированные функции внутри раздела «didFinishLaunchingWithOptions» вместо своего собственного раздела. – Joseph

+0

Вам не нужно: «импортировать FacebookSDK'' в AppDelegate. – confile