Вы сделали все правильно, но не в правильном потоке.
Просто следуйте такому форматированному коду.
- (void)viewDidLoad
{
[super viewDidLoad];
permissions = [[NSArray alloc] initWithObjects:@"read_stream", @"publish_stream",@"offline_access", nil];
facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:self];
}
-(IBAction)onClickLoginWithFb:(id)sender
{
if (![facebook isSessionValid]) {
[ facebook authorize:permissions];
}
else {
[facebook requestWithGraphPath:@"me" andDelegate:self];
}
}
- (void)fbDidLogin {
[appDelegate showLoadingView];
[facebook requestWithGraphPath:@"me" andDelegate:self];
// Save authorization information
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
- (void)fbDidLogout {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[facebook invalidateSession];
[defaults removeObjectForKey:@"FBAccessTokenKey"];
[defaults removeObjectForKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
NSLog(@"received response");
}
- (void)request:(FBRequest *)request didLoad:(id)result {
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
}