user1837401
user1837401

Reputation: 51

iOS Facebook SDK 3.2 Image Publish w/Description Open Graph

No matter what I try I cannot get my description to show up on Facebook. I used the debugger and all is well with the generated link and the URL is populated with the appropriate data. The picture is uploaded fine, but the description is not there. Is there something I need to setup in Facebook settings for the app?

Here is the relevant code:

- (id<FBPost>)outfitObjectForOutfit{

id<FBPost> result = (id<FBPost>)[FBGraphObject graphObject];

NSString *format =
@"http://mysite.mobi/app/fbOpen.php?"
@"og:title=%@&og:description=%%22%@%%22&"
@"og:caption=%%22%@%%22&"
@"og:image=http://mysite.mobi/images/transBlank.png&"
@"body=%@";
result.url = [NSString stringWithFormat:format,
              @"New Post Title",fldDescription.text,fldDescription.text,fldDescription.text];
return result;
}

And the portion that publishes to FB:

    - (void)postOpenGraphActionWithPhotoURL:(NSString*)photoURL
{

id<FBPost> outfitObject = [self outfitObjectForOutfit];

id<FBPostOutfit> action =
(id<FBPostOutfit>)[FBGraphObject graphObject];

action.outfit=outfitObject;

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

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

    action.image = images;
}
[FBSettings setLoggingBehavior:[NSSet
                                setWithObjects:FBLoggingBehaviorFBRequests,
                                FBLoggingBehaviorFBURLConnections,
                                nil]];
NSLog(@"%@",action);
NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:fldDescription.text forKey:@"message"];
[FBRequestConnection startForPostWithGraphPath:@"me/appnamespace:action"
                                   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];
         NSLog(@"%@",error);
     }
     [[[UIAlertView alloc] initWithTitle:@"Result"
                                 message:alertText
                                delegate:nil
                       cancelButtonTitle:@"Thanks!"
                       otherButtonTitles:nil]
      show];
 }
 ];
 }

Upvotes: 0

Views: 554

Answers (1)

user1837401
user1837401

Reputation: 51

I figured out my problem. I was confusing what the Facebook examples did (activity publishing) with publishing to a user's wall. This was all that I had to do to get it to work:

NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
[params setObject:fldDescription.text forKey:@"message"];
[params setObject:UIImagePNGRepresentation(userImage) forKey:@"picture"];

[FBRequestConnection startWithGraphPath:@"me/photos"
                             parameters:params
                             HTTPMethod:@"POST"
                      completionHandler:^(FBRequestConnection *connection,
                                          id result,
                                          NSError *error)
 {
     if (error) {

         [[[UIAlertView alloc] initWithTitle:@"Result"
                                     message:@"Sorry there was an error posting to Facebook."
                                    delegate:nil
                           cancelButtonTitle:@"OK"
                           otherButtonTitles:nil]
          show];
     }
 }];

I should also mention that I had to go into the opengraph settings for my app and allow user messages and user generated photos.

Upvotes: 1

Related Questions