2012-03-07 3 views
0

мне нужно использовать facebook API: в appdelegate.m у меня есть этот код:ИОС facebook апи не срабатывают fbLogin

// Initialize Facebook 
facebook = [[Facebook alloc] initWithAppId:@"MY_TOKEN" andDelegate:self]; 

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

после, в другой точке зрения у меня есть это:

AppDelegate* dlg = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
NSArray *permissions = [[NSArray alloc] initWithObjects:@"offline_access", nil]; 

if (![[dlg facebook] isSessionValid]) { 
    [[dlg facebook] authorize:permissions]; 
} 

и работает нормально: вызовите сафари с авторизацией для использования моего приложения, нажмите «ОК» для авторизации, и мое приложение снова вызвано ... мое приложение визуализирует последнее представление до авторизации, но событие

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

в AppDelegate.m (мой AppDelegate есть FBSessionDelegate) не уволен (а также другие события FBSessionDelegate как fbDidNotLogin не уволят ...

где моя ошибка? Заранее спасибо

ответ

2

Я думаю, вы забыли об этих двух методах и, возможно, забыли добавить свой идентификатор приложения Facebook в типы URL-адресов в информационном файле. for more detail
// Pre 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

благодаря rowwingman, теперь работает отлично! – ghiboz

Смежные вопросы