fbDidLogin non appelé – iOS

J'essaie d'implémenter facebook dans mon application iOS pour un projet d'école mais j'ai rencontré un petit problème, à savoir que la méthode fbDidLogin n'est pas appelée.

J'ai créé un exemple d'object appelé FBFetcher comme suit:

@interface FBFetcher : NSObject <FBDialogDelegate,FBSessionDelegate,FBRequestDelegate> { Facebook *facebook; FBFetcher *facebookFetcher; } -(void)login; @property (retain) Facebook *facebook; @property (retain) FBFetcher *facebookFetcher; @end 

Dans le FBFetcher.m:

  @implementation FBFetcher @synthesize facebookFetcher,facebook; -(void)login{ facebook = [[Facebook alloc] initWithAppId:@"...."]; NSArray *permissions = [[NSArray arrayWithObjects: @"offline_access",@"user_about_me", nil] retain]; [facebook authorize:permissions delegate:self]; } -(void)fbDidLogin { NSLog(@"Erfolgreich eingeloggt...."); } @end 

Dans mon délégué de l'application:

  - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[[controller facebookFetcher] facebook] handleOpenURL:url]; } 

J'ai un controller de vue séparé avec n action liée à un UIButton:

 facebookFetcher = [[FBFetcher alloc] init]; [facebookFetcher login]; 

Je peux accéder à la page de connection et d'autorisation, mais la méthode fbDidLogin n'est jamais appelée. Aucune suggestion?

La méthode n'est jamais appelée car lorsque vous l'autorisez, vous le faites dans Safari. Pour prendre soin de cela, que je pense être un bug de Facebook SDK à propos, ouvrez le file facebook.m et trouvez la ligne suivante:

 [self authorizeWithFBAppAuth:YES safariAuth:YES]; 

et le changer pour

 [self authorizeWithFBAppAuth:NO safariAuth:NO]; 

De cette façon, vous ne serez jamais envoyé à Safari, mais tout sera fait dans une boîte de dialog.

fbDidLogin le et vous verrez que la méthode fbDidLogin sera appelée.

J'espère que cela aidera

Qu'en est-il de

 - (void)fbDidNotLogin:(BOOL)cancelled 

Est-ce que ça s'appelle?

Recherchez cette fonction dans Facebook.m. C'est là que Facebook appelle votre fonction fbDidLogin. Assurez-vous d'abord que cela est appelé, puis déboguez dedans. Assurez-vous que vous avez correctement orthographié / défini fbDidLogin dans votre délégué de session (pas de parameters). Sinon le respondsToSelector échouera et n'appellera jamais la fonction de votre délégué.

 - (void)fbDialogLogin:(NSSsortingng *)token expirationDate:(NSDate *)expirationDate { self.accessToken = token; self.expirationDate = expirationDate; if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogin)]) { [_sessionDelegate fbDidLogin]; } }