2013-07-09 3 views
1

Я пытаюсь добиться следующего: enter image description hereIOS - Facebook Open Graph Апи - обеспечение того, чтобы фотографии пользовательский

Это требует запрос на открытый график, чтобы выглядеть примерно так: (https://developers.facebook.com/docs/opengraph/howtos/adding-photos-to-stories/)

POST /me/cookbook:eat? 
    recipe=http://www.example.com/recipes/pizza/& 
    image[0][url]=http://www.example.com/recipes/pizza/pizza.jpg& 
    image[0][user_generated]=true& 
    image[1][url]=http://www.example.com/recipes/pizza/pizza2.jpg& 
    image[1][user_generated]=true& 
    access_token=VALID_ACCESS_TOKEN 

Однако, используя этот код: (с scruptious учебника здесь: https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/publish-open-graph-story/) Я не знаю, как установить флаг генерируется пользователем истины. Из-за этого фотография кажется маленькой.

- (void)postOpenGraphActionWithPhotoURL:(NSString*)photoURL 
{ 
    // First create the Open Graph meal object for the meal we ate. 
    id<SCOGMeal> mealObject = [self mealObjectForMeal:self.selectedMeal]; 

    // Now create an Open Graph eat action with the meal, our location, 
    // and the people we were with. 
    id<SCOGEatMealAction> action = 
     (id<SCOGEatMealAction>)[FBGraphObject graphObject]; 
    action.meal = mealObject; 
    if (self.selectedPlace) { 
     action.place = self.selectedPlace; 
    } 
    if (self.selectedFriends.count > 0) { 
     action.tags = self.selectedFriends; 
    } 
    if (photoURL) { 
     NSMutableDictionary *image = [[NSMutableDictionary alloc] init]; 
     [image setObject:photoURL forKey:@"url"]; 

     NSMutableArray *images = [[NSMutableArray alloc] init]; 
     [images addObject:image]; 

     action.image = images; 
    } 

    // Create the request and post the action to the 
    // "me/<YOUR_APP_NAMESPACE>:eat" path. 
    [FBRequestConnection startForPostWithGraphPath:@"me/<YOUR_APP_NAMESPACE>:eat" 
          graphObject:action 
         completionHandler: 
    ^(FBRequestConnection *connection, id result, NSError *error) { 
     NSString *alertText; 
     if (!error) { 
      alertText = [NSString stringWithFormat: 
          @"Posted Open Graph action, id: %@", 
          [result objectForKey:@"id"]]; 
     } else { 
      alertText = [NSString stringWithFormat: 
          @"error: domain = %@, code = %d", 
          error.domain, error.code]; 
     } 
     [[[UIAlertView alloc] initWithTitle:@"Result" 
            message:alertText 
            delegate:nil 
          cancelButtonTitle:@"Thanks!" 
          otherButtonTitles:nil] 
      show]; 
    } 
    ]; 
} 

здесь, mealobject соответствует протоколу FBGraphObject. Используя тот же самый протокол, на который я наследую, как установить флаг, созданный пользователем, как true? В документации ничего не упоминается «user_generated».

Или мне не следует использовать протокол и вручную форматировать строку в соответствии с требуемыми параметрами сообщения?

EDIT: Я попытался вручную сделать это, используя строку вместо объекта FBOpenGraph, и мне удалось реплицировать эту же функциональность.

Однако я не смог получить несколько фотографий или установить их для создания пользователями.

SCProtocols.h:

#import <Foundation/Foundation.h> 
#import <FacebookSDK/FacebookSDK.h> 

@protocol SCOGMeal<FBGraphObject> 

@property (retain, nonatomic) NSString *id; 
@property (retain, nonatomic) NSString *url; 

@end 


@protocol SCOGEatMealAction<FBOpenGraphAction> 

@property (retain, nonatomic) id<SCOGMeal> meal; 

@end 

ответ

2

Вы должны быть в состоянии заменить код:

if (photoURL) { 
    NSMutableDictionary *image = [[NSMutableDictionary alloc] init]; 
    [image setObject:photoURL forKey:@"url"]; 

    NSMutableArray *images = [[NSMutableArray alloc] init]; 
    [images addObject:image]; 

    action.image = images; 
} 

с:

if (photoURL) { 
    NSMutableDictionary *image = [[NSMutableDictionary alloc] init]; 
    [image setObject:photoURL forKey:@"url"]; 

    [image setObject:@"true" forKey:@"user_generated"]; // <======= ***add this line*** 

    NSMutableArray *images = [[NSMutableArray alloc] init]; 
    [images addObject:image]; 

    action.image = images; 
} 
+0

Это, кажется, работает! Это странно ... потому что я думал, что попробовал это. Во всяком случае, http://stackoverflow.com/questions/17623341/ios-facebook-open-graph-api-getting-captions-to-show-up-next-to-user-genera теперь у меня другая проблема, подписи на рядом с этими более крупными изображениями. – stackOverFlew