Ответ 1
Сводный ответ, в котором описывается процесс... ключевым моментом является включение access_token в вызовы графа, поскольку facebook-ios-sdk не делает это автоматически:
1) Обновите последнюю версию facebook-ios-sdk.
2) Создайте файл с идентификатором приложения.
self.facebook = [[Facebook alloc] initWithAppId:kApplicationFBID];
3) Авторизовать приложение, включая publish_stream
NSArray * neededPermissions = [[[NSArray alloc] initWithObjects:@"user_about_me", @"publish_stream", @"user_photos", nil] autorelease];
[facebook authorize:neededPermissions delegate:appDelegate];
4) Убедитесь, что делегат приложения fBDidLogin захватывает и сохраняет токен доступа и срок его действия по умолчанию для пользователей (для дальнейшей оптимизации процесса входа в систему).
-(void)fbDidLogin {
DebugLog(@"New Access Token: %@", [facebook accessToken] );
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
5) Подтвердите действительный токен доступа (не ноль и не истек)... в противном случае повторите авторизацию приложения в соответствии с выше.
6) Захватите изображение в UIImage и назовите это, отметив критическое добавление access_token. Это автоматически создаст альбом для вашего приложения и разместит изображение там и разместит его на стене для моего тестирования.
-(void)postImageToAlbum:(UIImage *)image {
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
image, @"source",
@"caption desc", @"message",
nil];
[facebook requestWithGraphPath:[NSString stringWithFormat:@"/me/photos?access_token=%@", self.facebook.accessToken]
andParams:params andHttpMethod:@"POST" andDelegate:self];
}
код > 7) Проверьте результат ID в методе FBRequestDelegate
-(void)request:(FBRequest *)request didLoad:(id)result {
NSLog(@"Request didLoad: %@ ", [request url ]);
if ([result isKindOfClass:[NSArray class]]) {
result = [result objectAtIndex:0];
}
if ([result isKindOfClass:[NSDictionary class]]){
}
if ([result isKindOfClass:[NSData class]]) {
}
NSLog(@"request returns %@",result);
}
8) НЕ ИСПОЛЬЗУЙТЕ тестовую учетную запись пользователя для тестирования... в настоящее время она будет проверять тестовую учетную запись и предоставлять токен доступа, но при попытке использовать график api он вернет неожиданные ошибки. Вы можете быть в порядке, если вы используете настройку веб-версии и родного приложения на dev.facebook.com, так как предположительно вы можете создавать тестовых пользователей и связывать их с приложением, но я этого не пробовал.
Удачи!