I\'m trying to upload a photo to a Facebook page I own using the iOS SDK and graph API. I\'ve been able to upload photos to my own wall. I\'ve also been able to post a messa
You can send an email to your fan page and get the attached photo to show up as if the admin posted it.
On your fan page, choose to edit the page and then choose mobile. On the mobile page Facebook will show you an email address you can use to post to your fan page.
In iOS I use the http://code.google.com/p/skpsmtpmessage/ to send the email
You must use this...
svn checkout http://skpsmtpmessage.googlecode.com/svn/trunk/ skpsmtpmessage-read-only
to download the code
Don't include any text in the email besides something in the subject line. Otherwise it won't post.
I have very similar codes and it works, the only thing that is slightly different is I create the Facebook instance in the AppDelegate ..
QRSMAppDelegate *delegate = (QRSMAppDelegate *)[[UIApplication sharedApplication] delegate];
if (![[delegate facebook] isSessionValid]) {
[[delegate facebook] authorize:permissions];
Like you I initially created the Facebook instance in the view controller and I came out with a lot of weird errors. The issue (I later found out) is ... Facebook responds by passing a URL to the Facebook class instance and from outside the only entry point to your app is the app delegate. (Check the Facebook sdk sample app Hackbook)!
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
BOOL ret = [facebook handleOpenURL:url];
.... return(ret); }
The issue here of course is what if I only use Facebook in a small part of my app and miles away from the app delegate (Facebook instantiation require you to declare the delegate!
Rather than face equally complex issues in passing the url up, it was actually easier to just alloc init the view controller (Facebook delegate) in the app delegate and pass it up the view hierarchy.
Ater successfully login to Facebook, you can get list FanPage by requesting @"/me/accounts" and iterate to the fan page you want and request its accessToken by making request to @"/FBFanPageID?fields=access_token"
This accessToken is different from your facebook.accesstoken .
After getting fanPage accessToken, set it as facebook accessToken by
[_facebook setAccessToken:_accessTokenForFanPage];
// this is necc step
Now you can upload to fanPage wall by @"/FBFanPageID/photos"
Request fanPage albums by @"/FBFanPageID/albums"
Upload to particular album by @"/AlbumsID/photos"
For uploading these image param dictionary will be used.
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
IMAGE,@"source",
IMAGECAPTION,@"message",
nil];
Old news but...not sure about the fan page part but you need to add "?access_token=..." after "/me/photos" or whatever you end up using for the graph API to get past the unknown error. The facebook sdk doesn't automatically add the access token so you have to do it yourself.
[facebook requestWithGraphPath:[NSString stringWithFormat:@"/me/photos?access_token=%@", facebook.accessToken] andParams:params andHttpMethod:@"POST" andDelegate:self];
Not sure about this since I am quite new to FB iOS integration but I think you shouldn't use me/photos but the xyz/photos where xyz is the ID of the page you want to post to.