2015-05-22 11 views
5

Logowanie i wylogowanie działa poprawnie. Według FacebookFBSDKLoginButtonDelegate nie wyzwalanie metod delegatów

„Twoja aplikacja może uzyskać informację o wynikach logowania lub wylogowania zdarzeń. Aby to zrobić przypisać delegatem FBSDKLoginButton że potwierdza protokołu FBSDKLoginButtonDelegate”.

Dodałem FBSDKLoginButtonDelegate do mojego kontrolera widoku, który ma następującą właściwość:

@property (weak, nonatomic) IBOutlet FBSDKLoginButton *FacebookButton; 

i .m pliku (realizacja) posiada:

@interface firstVC() 
<FBSDKLoginButtonDelegate> 

@end 

ale problem jest że FBSDKLoginButtonDelegate nie dzwoni:

- (void) loginButton: (FBSDKLoginButton *)loginButton 
didCompleteWithResult: (FBSDKLoginManagerLoginResult *)result 
       error: (NSError *)error{ 

    NSLog(@"facebook login button test"); 


} 

i wylogowania nie dzwoni:

- (void) loginButtonDidLogOut:(FBSDKLoginButton *)loginButton{ 
    NSLog(@"facebook logout button test"); 
} 

Dodatkowo mam zadeklarowane wcześniej wymienionych metod w nagłówku między @interface i @end

+1

W appdelegate ..hate zadeklarować cokolwiek w metodzie openurl? –

Odpowiedz

7

musiałem upewnić klasę przycisku był FBSDKLoginButton zamiast UIButton, które miałem już zrobione:

@property (weak, nonatomic) IBOutlet FBSDKLoginButton *FacebookButton; 

Raz to zrobiłem i wdrożono dwie klasy wyżej wymienionych w pytaniu, to fix było ustawić przycisk przenoszą na siebie na viewDidLoad w pliku wdrażania:

[FacebookButton setDelegate:self]; 
+0

Postępuj zgodnie z konwencją naz-obj-C, prawidłowa nazwa to "faceBookButton" – BootMaker

-1

dodać te linie do viewDidLoad

[_loginFaceBook setReadPermissions: @[@"public_profile",@"email"]]; 
[_loginFaceBook setDelegate:self]; 
[FBSDKProfile enableUpdatesOnAccessTokenChange:YES]; 
0

myślę odpowiedź ConfusedDeer nie jest ważna z bieżących wydań. Ponieważ nawet dokumentacja wydaje się być przestarzała.

Praca, którą znalazłem, była używana;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLogIn) name: FBSDKAccessTokenDidChangeNotification object:nil]; 

fragment powyżej, wewnątrz aplikacji: openURL wywoływana przez aplikację Facebook. W selektorze wykonałem niezbędną pracę po zalogowaniu.

Uwaga: ta sama funkcja będzie wywoływana przy każdej zmianie stanu tokena dostępu, więc powinieneś utworzyć kopię zapasową tego kodu za pomocą własnej logiki. Przynajmniej do momentu, gdy Facebook naprawi dokument lub kod.