2012-04-02 4 views
0

Dans mon ViewControllerfbdidLogin jamais appelé

- (IBAction)loginBtn:(id)sender 
{ 
    facebook = [[Facebook alloc] initWithAppId:@"231190276934148" andDelegate:self]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
} 

    if (![facebook isSessionValid]) { 
     NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_likes", 
          @"user_about_me", 
          @"user_photos", 
          @"friends_about_me", 
          @"friends_activities", 
          @"read_stream", 
          @"publish_stream", 
          nil]; 
     [facebook authorize:permissions]; 
    } 

    NSLog(@"asdoiffijd"); 
} 

- (IBAction)btnRequest:(id)sender 
{ 
    [facebook requestWithGraphPath:@"me/friends" andDelegate:self]; 
} 

- (void)fbDidLogin 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExiprationDateKey"]; 
    [defaults synchronize]; 
    NSLog(@"fbDidLogin!"); 
} 

Dans mon appDelegate

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [facebook handleOpenURL:url]; 
} 

Je pense que - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation doit être appelée avant l'fbdidLogin, mais je ne peux pas terminer cette partie [facebook handleOpenURL:url];

dans stackoverflow , [[controller facebook] handleOpenURL:url]; va résoudre le problème, mais je ne peux pas le faire. Toute solution?

Répondre

0

Dans leur documentation, ils suggèrent que vous en avez besoin dans votre délégué d'application.

https://developers.facebook.com/docs/mobile/ios/build/

Lorsque j'ai essayé, je le mettre dans un autre objet que j'utilise pour interagir avec des sources Internet et cela n'a pas fonctionné. Quand je l'ai mis dans mon délégué de l'application, ça a bien fonctionné. Je ai conclu que quand ils disent "Modifier le délégué de l'application ...", ils vraiment signifient le délégué de l'application.

+0

Ouais .. J'ai essayé dans appDelegate et ça a vraiment marché. mais puis-je créer le bouton pour la connexion FB dans appDelegate? –

+0

Non, mais dans votre contrôleur de vue, vous pouvez avoir une ligne qui indique quelque chose comme 'YourAppDelegate * appDelegate = (YourAppDelegate *) [UIApplication sharedApplication] .delegate;' et vous pouvez commencer à utiliser votre objet Facebook ou ses méthodes à ce stade. – Rob