Reputation: 2914
On [self.facebook requestWithGraphPath:@"me" andDelegate:self]; I get the above mentioned exception. Here is my code
- (void)viewDidLoad
{
[super viewDidLoad];
self.facebook = [[Facebook alloc] initWithAppId:@"<app id hidden>" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![self.facebook isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_likes",
@"read_mailbox",
nil];
[self.facebook authorize:permissions];
[self.facebook requestWithGraphPath:@"me" andDelegate:self];
}
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.facebook handleOpenURL:url];
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[self.facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[self.facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
-(void)request:(FBRequest *)request didLoad:(id)result
{
NSArray *messagesResult= result;
}
-(void) request:(FBRequest *)request didFailWithError:(NSError *)error
{
NSLog(@"%@",error);
}
Upvotes: 0
Views: 4169
Reputation: 8090
You should wait for Facebook to authorize you and call fbDidLogin
in your FB delegate. Then, in fbDidLogin
you launch requestWithGraphPath:
. In your code you launch graph request before token is received, because FB authorization is asyncronous.
Upvotes: 1