Я пытаюсь извлечь основную информацию о пользователе с помощью последней версии FBConnect SDK. Мой код прост:
- (void)viewDidLoad {
[super viewDidLoad];
facebook = [[Facebook alloc] initWithAppId:fbAppId];
NSArray* permissions = [[NSArray arrayWithObjects:@"user_about_me",@"read_stream",nil]retain];
[facebook authorize:permissions delegate:self];
[facebook requestWithGraphPath:@"me" andDelegate:self];
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
fbAppId, @"app_id",
[NSString stringWithFormat: @"Some Text"], @"description",
@"My Test App", @"name",
@"Test Facebook Graph API",@"message",
nil];
[facebook dialog:@"feed" andParams:params andDelegate:self];
}
- (BOOL) application: (UIApplication*) application handleOpenURL:(NSURL *)url {
return [facebook handleOpenURL:url];
}
- (void) fbDidLogin {
NSLog(@"FB didLogin");
}
- (void) fbDidNotLogin:(BOOL)cancelled {
NSLog(@"FB didNotLogin");
}
- (void) request:(FBRequest *)request didLoad:(id)result {
NSLog(@"request-didLoad-result");
}
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response {
NSLog(@"received response");
}
До этого момента все шло хорошо, по-видимому. Публикация диалога через канал на стене пользователя работает нормально. Проблема возникает, когда я пытаюсь получить информацию о пользователе, такую как имя, с помощью:
[facebook requestWithGraphPath:@"me" andDelegate:self];
Но ни fbDidLogin, ни requestDidLoad не вызываются. Для requestDidLoad я проверил didLoadRawResponse, как он вызывается перед запросом didLoad:
- (void)request:(FBRequest *)request didLoadRawResponse:(NSData*)data {
NSString *response = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"Response is = %@",response);
[response release];
}
В ответ я получаю следующую ошибку аутентификации:
{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}}
В чем причина и решение?