Skip to content

Instantly share code, notes, and snippets.

@parthjdabhi
Forked from andrewzimmer906/gist:3145581
Last active August 29, 2015 14:26
Show Gist options
  • Save parthjdabhi/474da4f46ad84748d1b3 to your computer and use it in GitHub Desktop.
Save parthjdabhi/474da4f46ad84748d1b3 to your computer and use it in GitHub Desktop.
Post Photo and Message wall with Facebook iOS6 SDK
// Start here https://developers.facebook.com/docs/getting-started/getting-started-with-the-ios-sdk/
// Install the Facebook SDK, get it linked up, create an app, and get that setup correctly
// in your info.plist, appDelegate, and build settings.
//Note: This example uses ARC. If you aren't using ARC, made sure to release/retain objects as needed.
//Now for the fun part.
////////////////////////////
// Step 1. Login with permissions.
////////////////////////////
-(void)loginThenPost {
NSArray *permissions = [NSArray arrayWithObjects:@"publish_actions",
@"user_photos",
nil];
[FBSession sessionOpenWithPermissions:permissions
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
if(error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Problem connecting with Facebook" delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil];
[alert show];
} else {
[self postPhoto];
}
}];
}
////////////////////////////
// Step 2. Post that photo to FB.
////////////////////////////
-(void)postPhoto {
// We're going to assume you have a UIImage named image_ stored somewhere.
FBRequestConnection *connection = [[FBRequestConnection alloc] init];
// First request uploads the photo.
FBRequest *request1 = [FBRequest
requestForUploadPhoto:image_];
[connection addRequest:request1
completionHandler:
^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
}
}
batchEntryName:@"photopost"
];
// Second request retrieves photo information for just-created
// photo so we can grab its source.
FBRequest *request2 = [FBRequest
requestForGraphPath:@"{result=photopost:$.id}"];
[connection addRequest:request2
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error && result) {
NSString *ID = [result objectForKey:@"id"];
[self postDataWithPhoto:ID];
}
}
];
[connection start];
}
////////////////////////////
// Step 3. Post message with linked photo to the user's wall.
// We're going to post to the open graph 'user/feed' stream.
// Go here https://developers.facebook.com/docs/reference/api/ and do a page find for
// '/PROFILE_ID/feed' to get extra information about the parameters accepted in this call.
////////////////////////////
-(void)postDataWithPhoto:(NSString*)photoID {
NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:@"I'm totally posting on my own wall!" forKey:@"message"];
if(photoID) {
[params setObject:photoID forKey:@"object_attachment"];
}
[FBRequest startForPostWithGraphPath:@"me/feed"
graphObject:[NSDictionary dictionaryWithDictionary:params]
completionHandler:
^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
[[[UIAlertView alloc] initWithTitle:@"Result"
message:@"Your update has been posted to Facebook!"
delegate:self
cancelButtonTitle:@"Sweet!"
otherButtonTitles:nil] show];
} else {
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Yikes! Facebook had an error. Please try again!"
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil] show];
}
}
];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment