Reputation: 867
In my App I used Facebook sdk 3.1 and using that I try to do wall Post. Using This Code Snippet I can successfully wall post Image and Message on Friend Wall and on my own wall.I just change me/photos and friendId/photos.
-(IBAction)postPhoto:(id)sender
{
UIImage *image=[UIImage imageNamed:@"baby.jpg"];
NSArray *frndArray=[[NSArray alloc] initWithObjects:@"Friend ID", nil];
[self postImageOnFriendsWall:image FriendsArray:frndArray];
}
-(void)postImageOnFriendsWall:(UIImage*)image FriendsArray:(NSArray*)friends
{
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
// if we don't have permission to announce, let's first address that
if ([appDelegate.session.permissions indexOfObject:@"publish_actions"] == NSNotFound)
{
NSArray *permissions =[NSArray arrayWithObjects:@"publish_actions",@"publish_stream",@"manage_friendlists", nil];
[FBSession setActiveSession:appDelegate.session];
[[FBSession activeSession] reauthorizeWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error)
{
if (!error)
{
// have the permission
[self postImageOnFriendsWall:image FriendsArray:friends];
}
else
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}];
}
else
{
//post image
for (id<FBGraphUser> user in friends)
{
NSString* szMessage = @"Check out!";
NSString *userID = user;
NSLog(@"trying to post image of %@ wall",userID);
NSMutableDictionary *postVariablesDictionary = [[NSMutableDictionary alloc] init];
[postVariablesDictionary setObject:UIImagePNGRepresentation(image) forKey:@"picture"];
[postVariablesDictionary setObject:szMessage forKey:@"message"];
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/photos",userID] parameters:postVariablesDictionary HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
if (error)
{
//showing an alert for failure
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Facebook"
message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
else
{
//showing an alert for success
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Facebook"
message:@"Shared the photo successfully" delegate:nil cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}];
}
}
}
For Message wall post I used me/feed and its work but for Friend friendID/feed will give me Error: HTTP status code: 403 and In alert box i got com.facebook.sdk error 5.
So Please guide me m I doing anything wrong?, or What I have to do for wall post.
Upvotes: 1
Views: 4206
Reputation: 867
Here is solution,
I update my FB SDK 3.1 to 3.2 then import
#import <FacebookSDK/FacebookSDK.h>
then update
[[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error) {}];
in place of
[[FBSession activeSession] reauthorizeWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error){}];
and update
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"FRIEND ID", @"to",
@"text change", @"caption",
@"this is test message on ur wall", @"description",
@"https://website.com/share", @"link",
@"http://website.com/iossdk_logo.png", @"picture",
nil];
[FBWebDialogs presentFeedDialogModallyWithSession:nil
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error)
{}];
in place of
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/photos",userID] parameters:postVariablesDictionary HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error){}];
and i got Dialog box and after click on share Successfully post on FRIEND's Wall.
Hope this snippet help someone else.
Upvotes: 7
Reputation: 439
I am not sure. Try this one:
me?fields=friends.fields(feed)
Upvotes: 0