Post to Friend's Wall with iOS Facebook SDK - objective-c

Is it possible to use the iOS Facebook SDK's dialog method to post to the active user's friends' walls? That is, assuming the correct permissions have been granted?
Using the dialog method, with "feed" as the action, only seems to allow me to post to the user's stream, not to anyone elses. What am I missing?
[facebook dialog:"feed" andParams:... andDelegate:self]
The params only specify the content of the post; there doesn't seem to be any way to specify the profile I want to post to.

Just use the following code:
[facebook requestWithGraphPath:#"[IdOfFriend]/feed" andParams:... andHttpMethod:#"POST" andDelegate:self];

post on friends wall through graph path no more works
your feed action works.. have params like
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
#"Checkout my APP_NAME", #"name",
#"Come visit my APP_NAME", #"caption",
[NSString stringWithFormat:#"I just joined APP_NAME Can you?"], #"description",
#"http://www.friendsmash.com/images/logo_large.jpg", #"picture",
#"FRIEND'S_FB_USER_ID", #"to",
// Add the link param for Deep Linking
[NSString stringWithFormat:#"https://YOUR_WEB_LINK.com/"], #"link",
nil];
Cheers...!

Related

Invite friends with new Facebook api

I've just updated Facebook framework and old code for invite friends does't work(Now there is no Facebook class object.). I used the following code:
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
#"1", #"frictionless",
#"My message", #"message",
#"Notification", #"notification_text",nil];
[self.facebook dialog:#"apprequests" andParams:params andDelegate:self];
Is it possible to show the same dialog on the latest framework?
Yes it is. The sample iOS game, Friend Smash (https://github.com/fbsamples/ios-friend-smash), uses this technique. The equivalent code is here:
https://github.com/fbsamples/ios-friend-smash/blob/master/friendsmash/friendSmasher/Game/GameController_FacebookIntegration.cpp#L365

How to get share dialog box with parse.com and facebook 3.0 sdk

I can't seem to find information on how to open share dialog box with parse sdk which includes fb 3.0. I am able to login with facebook and actually found a way to post with out the dialog box but still would like to have the dialog box so that people can add comments and it comes out with the image on facebook. This is what i have so far.
#"publish_stream",#"publish_actions" allows me to publish with out the dialog box
logInController.facebookPermissions = [NSArray arrayWithObjects:#"user_about_me",#"friends_about_me",#"publish_stream",#"publish_actions", nil];
this is to publish
PF_FBRequest *request = [PF_FBRequest requestForPostStatusUpdate:[self.Excerpt objectForKey:#"text"]];
[request startWithCompletionHandler:^(PF_FBRequestConnection *connection, id result, NSError *error){
NSLog(#"error %#",error);
}];
I found the code to open the dialog box from facebook website but i am not sure how to get an instance of the PF_Facebook object so i can open the dialog box. I can try to do
PF_Facebook *fb = [[PF_Facebook alloc]initWithAppId:<#(NSString *)#> andDelegate:<#(id<PF_FBSessionDelegate>)#>;
but that doesn't seem to be right because i already initialize this in the appdelegate
//Update
I am able to get the dialog box using this code
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
#"Facebook SDK for iOS", #"name",
#"Build great social apps and get more installs.", #"caption",
#"The Facebook SDK for iOS makes it easier and faster to develop Facebook integrated iOS apps.", #"description",
#"https://developers.facebook.com/ios", #"link",
#"https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png", #"picture",
nil];
//publishes text on facebook
PF_FBSession *session = [PFFacebookUtils session];
PF_Facebook *fb = [[PF_Facebook alloc]initWithAppId:session.appID andDelegate:nil];
[fb dialog:#"feed" andParams:params andDelegate:self];
But the problem is that the person gets the login page in the dialog box even though he is authenticated already in the app
Any suggestions would be greatly appreciated!
Thank You!
To set up a PF_Facebook object you need to also provide the access token and expiration date information as below:
PF_FBSession *session = [PFFacebookUtils session];
PF_Facebook *facebook = [[PF_Facebook alloc] initWithAppId:session.appID
andDelegate:nil];
// Store the Facebook session information
facebook.accessToken = session.accessToken;
facebook.expirationDate = session.expirationDate;
Rather than creating a new session, you can just use the "facebook" class method to get a configured PF_Facebook object
PF_Facebook *facebook = [PFFacebookUtils facebook];
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:#"Check out this great app", #"message", nil]:
[facebook dialog:#"apprequests" andParams:parameters andDelegate:nil];

Cancel image upload to Facebook from iOS

I have an app that uploads an image to Facebook. this is the part of my code that does that:
[[self appDelegate] facebooking]; // checke that the user is loged in
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
labeledImage, #"source",
FB_IMG_POST_TITLE,#"message",
nil];
[ [[self appDelegate] getFacebookVar] requestWithGraphPath:[NSString stringWithFormat: #"/me/photos?access_token=%#", self.appDelegate.getFacebookVar.accessToken] andParams:params andHttpMethod:#"POST" andDelegate:self];
I want to
A) make the upload process a different thread.
B) Give the user the option to cancel the upload.
How would I do that?
Firstly, you are not using the facebook SDK correctly. You should not need to explicitly add the access_token. Please see the sample code for this.
You shouldn't need a different thread, the request will be handled asynchronously. What made you think you need to do this?
I'm not sure you can do B) by default. You could change the sdk source to give access to the NSURLConnection (which you can cancel).

How to specify tags when uploading video to Facebook using the Graph API

I'm able to upload videos to Facebook successfully using the latest Graph API via Objective-C. However, I'd like to also tag certain Facebook users who are in the video. I cannot get this to work.
The FB documentation says that there is a "tag" field that accepts an array of objects containing id and name fields. However, if I try to pass a JSON string in this format the video upload fails, without any useful error message. Am I passing the tags data correctly?
Here's sample code that fails. The code succeeds when I remove the #"tags" field from params, or set tagStr to an empty array, i.e. #"[]".
NSString *tagStr = #"[{\"id\":\"<id-removed>\", \"name\":\"<name-removed>\"}]";
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
data, #"video.mov",
#"video/quicktime", #"contentType",
titleStr, #"title",
descStr, #"description",
tagStr, #"tags", // specifying tags fails
nil];
[facebook requestWithGraphPath:#"me/videos"
andParams:params
andHttpMethod:#"POST"
andDelegate:self];
Your Params Dictionary Should be like this,
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
videoData, #"video.mov",
#"video/quicktime", #"contentType",
#"Birthday wishes", #"title",
#"via Birthday wishes", #"description",facebook.accessToken,#"access_token",
nil];
After the Video gets posted,you can able to tag friends in - (void)request:(FBRequest *)request didLoad:(id)result as like
[APP.facebook requestWithGraphPath:[NSString stringWithFormat:#"%#/tags/%#?access_token=%#", photoID, [ar_tID objectAtIndex:i], APP.facebook.accessToken]andParams:nilandHttpMethod:#"POST" andDelegate:self];

how to publish photo on application profile page using REST api of facebook

i am uploading photo to application(or like) profile page. But it will show error message
"error_code":240,"error_msg":"Requires a valid user is specified (either via the session or via the API parameter for specifying the user."
i am using REST API for facebook.
And this code
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
img, #"picture",
kAppId,#"uid",
nil];
[_facebook requestWithMethodName:#"photos.upload"
andParams:params
andHttpMethod:#"POST"
andDelegate:self];
where kAppId is applicatino ID.
if i remove #"Uid" parameter then photo uploaded to my(user) photo album.
this thing is possible in web that user can upload a photo to like page as news feed.
how we can do it through REST APi
Thanks
You may want to try urlencoding your params using
[params dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];