2012-04-02 17 views
0

In meinem ViewcontrollerfbdidLogin genannt nie

- (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!"); 
} 

In meinem AppDelegate

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

Ich denke - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation vor dem fbdidLogin genannt werden sollte, aber ich kann diesen Teil nicht vollständig [facebook handleOpenURL:url];

in Stackoverflow [[controller facebook] handleOpenURL:url]; löst Problem, , aber ich kann das nicht tun. Irgendeine Lösungsmöglichkeit?

Antwort

0

In ihrer Dokumentation schlagen sie vor, dass Sie dies in Ihrem App-Delegaten benötigen.

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

Als ich versuchte, erste, ich habe es in ein anderes Objekt setzen, die ich für die Interaktion mit Internet-Quellen verwenden, und es hat nicht funktioniert. Als ich es in meinen App-Delegierten legte, funktionierte es gut. Ich folgerte, dass, wenn sie sagen "Ändern Sie die Anwendung Delegat ...", sie wirklich bedeuten die App Delegate.

+0

Ja .. Ich habe versucht in AppDelegate und es hat wirklich funktioniert. kann ich aber die taste für die FB-Anmeldung in AppDelegate machen? –

+0

Nein, aber in deinem View-Controller kannst du eine Zeile haben, die etwas wie 'YourAppDelegate * appDelegate = (YourAppDelegate *) [UIApplication sharedApplication] .delegate; 'sagt und dann kannst du dein Facebook-Objekt oder seine Methoden an diesem Punkt benutzen. – Rob

Verwandte Themen