I am using facebook-ios-sdk in my iphone application
I am trying to post a link on facebook from my iphone application
NSLog(#"link..%#",[shareDict objectForKey:#"url"]);
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
[shareDict objectForKey:#"url"], #"link",nil];
[facebookObj requestWithMethodName:#"facebook.Stream.publish" andParams:params
andHttpMethod:#"POST" andDelegate:self];
it successfully posted as my application log
2011-03-30 13:10:02.128 myApp[1804:207] link..http://khabar.ndtv.com/Home.aspx
2011-03-30 13:10:04.064 myApp[1804:207] received response..https://api.facebook.com/method/facebook.Stream.publish
2011-03-30 13:10:04.066 myApp[1804:207] request didLoad.. . . API..thod/facebook.stream.publish
But link is not showing on facebook wall... it shown as..
Now
How I post the link with out showing dialog
How I it as like in facebook .. as user have option to select the image from link with out any dialog.. I can use my own view for it. like as
Here's my FB arguments snippet:
[fbArguments setObject:theName forKey:#"name"];
[fbArguments setObject:theCpation forKey:#"caption"];
[fbArguments setObject:theDescription forKey:#"description"];
[fbArguments setObject:theLink forKey:#"link"];
[fbArguments setObject:theHREF forKey:#"href"];
[fbArguments setObject:thePictureURL forKey:#"picture"];
Related
This question already has answers here:
How to post on a friend's Timeline after the February 2013 migration takes effect?
(4 answers)
Since Feb. 6th, can I post to friends' timeline by Graph API call directly?
(1 answer)
Closed 9 years ago.
I am working on an application on facebook integration using fbgraph api.I have downloaded sample application from this link oAuth2Test and then changed client_id.While post on me it is working fine but I don't know how to post on a friends wall or if this is possible.
Or at least to send his friends a message.
Can anyone give me a clue?
Thank you!
posting me working fine
-(IBAction)postMeFeedButtonPressed:(id)sender {
NSMutableDictionary *variables = [NSMutableDictionary dictionaryWithCapacity:4];
[variables setObject:#"this is a test message: postMeFeedButtonPressed" forKey:#"message"];
[variables setObject:#"http://bit.ly/bFTnqd" forKey:#"link"];
[variables setObject:#"This is the bolded copy next to the image" forKey:#"name"];
[variables setObject:#"This is the plain text copy next to the image. All work and no play makes Jack a dull boy." forKey:#"description"];
FbGraphResponse *fb_graph_response = [fbGraph doGraphPost:#"me/feed" withPostVars:variables];
NSLog(#"postMeFeedButtonPressed: %#", fb_graph_response.htmlResponse);
//parse our json
SBJSON *parser = [[SBJSON alloc] init];
NSDictionary *facebook_response = [parser objectWithString:fb_graph_response.htmlResponse error:nil];
[parser release];
//let's save the 'id' Facebook gives us so we can delete it if the user presses the 'delete /me/feed button'
self.feedPostId = (NSString *)[facebook_response objectForKey:#"id"];
NSLog(#"feedPostId, %#", feedPostId);
NSLog(#"Now log into Facebook and look at your profile...");
}
I have tried with openGraph and normal dialog as below,
[facebook requestWithGraphPath:[NSString stringWithFormat:#"/%#/feed",#"friends_fb_id" ] andParams:variables andHttpMethod:#"POST" andDelegate:self];
and
[facebook dialog:#"feed" andParams:params andDelegate:self]
I gave params for both methods as
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
#"friends_fb_id", #"to",
#"I'm using the Hackbook for iOS app", #"name",
#"Hackbook for iOS.", #"caption",
#"Check out Hackbook for iOS to learn how you can make your iOS apps social using Facebook Platform.", #"description",
#"http://m.facebook.com/apps/hackbookios/", #"link",
#"http://www.facebookmobileweb.com/hackbook/img/facebook_icon_large.png", #"picture",
nil];
in delegate method it correctly return the Post_id, so its completing successfully but I can not see the post on friends wall. If try using the Hackbook app that comes with SDK it works perfectly.
What could be the possible solution.
Did you forget to enable publish_actions or publish_stream permissions during login?
// login to FB
-(void) FBLogin
{
NSArray *permissions = [[NSArray alloc] initWithObjects:#"publish_actions",#"publish_stream", nil];
[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES completionHandler:^(FBSession *_session, FBSessionState _status, NSError *_error) {
// do some login handling code here
}];
}
You are using the string "friends_fb_id" should this not be an actual id?
I had a similar situation where is was receiving the correct response, so it was posting, it was just posting to the wrong place.
Make sure the id's are correct.
I am using the Facebook IOS library. I am trying to post an image to the user's wall. I am able to upload the image to the application Album, but i can not get it to show up on the user's wall.
The application is granted the publish_stream permissions:
[self.facebook authorize: [NSArray arrayWithObject: #"publish_stream"]];
The image is posted with the following code:
NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
UIImagePNGRepresentation(_image), #"source",
message, #"message", nil];
[self.facebook requestWithGraphPath: #"me/photos"
andParams: params
andHttpMethod: #"POST"
andDelegate: self];
This works great - the image end up in the app album on Facebook - now how do I get this image to show up on the user's wall?
Thanks
Greg
I'm trying to use the Facebook iOS "feed" dialog call to allow my app's user to share something on their Facebook wall. When the facebook app is not installed, it attempts to let them authenticate within the app (presumably using a web view). The issue is that this dialog just disappears once they authenticate. I was expecting the web view to return to the "feed" sharing view.
How do I detect that they authenticated so that I can re-open the feed dialog?
I've added fbDidLogin to my app delegate, but it's not being called. (I wasn't sure if this would normally be called or not, but I read several people recommending this.)
SBJSON *jsonWriter = [SBJSON new];
// The action links to be shown with the post in the feed
NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
#"More Videos",#"name",#"http://www.example.com/",#"link", nil], nil];
NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
#"Test Caption", #"caption",
#"Test Description", #"description",
#"https://s3.amazonaws.com/example/images/test.png",
#"source",
self.video.blogLink, #"link",
#"01234567890123", #"app_id",
actionLinksStr, #"actions",
nil];
[delegate facebook].sessionDelegate = delegate;
[[delegate facebook] dialog:#"feed" andParams:params andDelegate:self];
It turns out the issue is the same as those reporting that the dialog disappears immediately for them. There is a bug in the Facebook SDK in regards to handling error -999, with the solution described in this comment on SO.
I finally realized I was having the same issue (albeit manifesting slightly differently), when I started listening to the FBDialogDelegate's method:
- (void)dialog:(FBDialog*)dialog didFailWithError:(NSError *)error
The error description referenced the -999 error mentioned above, leading me to the answer. Luckily the code checked into github worked flawlessly. I just had to pull it into the SDK codebase and recompile the .a lib file, then include it into my project.
Did you implemented facebook protocol FBSession in your view controller ?
To detect that user is authenticated you have to call isSessionValid:
if (![[self.fbAppDelegate facebook] isSessionValid]) {
NSArray *permissions = [[NSArray alloc] initWithObjects:#"publish_stream",#"create_event",#"offline_access", nil];
[[self.fbAppDelegate facebook] authorize:permissions];
}
and authorize inApp:
[self authorizeWithFBAppAuth:NO safariAuth:NO];
I am trying to make a post on another user's wall using another user using FBConnect. I am using the embedded method of the iOS Facebook API (that is, I am forcing the browser to appear inside my app, so I am not leaving the application at all). This method works for posting into the wall of the same user, but doesn't work on the wall of another user.
self.facebook = [[[Facebook alloc] initWithAppId:self.appID andDelegate:self] autorelease];
if ([self.facebook isSessionValid]) {
[self proceedToPost];
}else{
NSArray *permissions = [NSArray arrayWithObjects:#"publish_stream", #"email", #"read_stream", #"manage_pages", nil];
[self.facebook authorize:permissions];
}
- (void)proceedToPost
{
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: #"aName", #"name",
self.appID, #"app_id",
self.title, #"caption",
self.link, #"link",
#"animateURL", #"picture",
nil];
[params setObject:"my-user-profile-id" forKey:#"to"];
[self.facebook dialog:#"feed" andParams:params andDelegate:self];
}
The problem is that authorization is done as expected, but when trying to actually post, I see an error message in the embedded browser "cannot post to user's wall".
Can anyone help me with this?
Did you request the publish_stream permission from the extended permissions?
From the documentation about publish_stream permission:
Enables your app to post content, comments, and likes to a user's
stream and to the streams of the user's friends. With this permission,
you can publish content to a user's feed at any time, without
requiring offline_access. However, please note that Facebook
recommends a user-initiated sharing model.
http://developers.facebook.com/docs/reference/api/permissions/
You can request permissons like this:
NSArray *permissions = [[NSArray alloc] initWithObjects:
#"publish_stream",
nil];
[facebook authorize:permissions];
[permissions release];