Facebook SDK для iOs работает неправильно - PullRequest
0 голосов
/ 11 марта 2012

Я занимаюсь разработкой приложения iOs 5 и пытаюсь добавить общий доступ к Facebook с помощью Facebook SDK. Я много кодировал, но это не работает. Это код, который я использую с сайта разработчиков Facebook:

- (IBAction) buttonpressed {
    facebook = [[Facebook alloc] initWithAppId:@"245697495524266" 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]) {
        [facebook authorize:nil];
    } else {
        [self fbDidLogin];            
    }          
}            
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [facebook handleOpenURL:url]; 
}
- (void)fbDidLogin {
    NSLog(@"Facebook did login");

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];
    // Here I would like to share something (photo...) 
}

Когда я нажимаю кнопку, я захожу в приложение Facebook и мне нужно разрешить приложение, затем я возвращаюсь в свое приложение. Проблема в том, что - (void) fbDidLogin не запускается (NSLog не отображается в консоли), поэтому я не могу ничего поделиться. Как я могу это исправить?

Ответы [ 3 ]

0 голосов
/ 11 марта 2012

Где вы положили этот код?в делегате приложения?

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

он должен быть в делегате приложения, а не в вашем классе.

0 голосов
/ 11 марта 2012

Я думаю, что вы забыли об этих двух методах и, возможно, забыли добавить идентификатор приложения Facebook для типов URL в информационном файле. для более подробной информации // Поддержка до 4.2

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

// Для поддержки 4.2+

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [facebook handleOpenURL:url]; 
}
0 голосов
/ 11 марта 2012

Единственная проблема может быть, если ваш класс не соответствует FBSessionDelegate в его .h файле

т.е.

@interface Yourclass : NSObject <FBSessionDelegate>
...