I am currently using the Facebook realtime updates feature in my application. I am looking for comments, on photos, status updates etc. I have successfully got it to work on a status update, on a post of a photo to a wall and a friend's post on the wall. However I can't get it to work on a photo which is within the owner's album. Neither the updated time of the album nor the photo's updated time change. I want to limit my queries as much as possible.
What's the best way to approach this?
What is the fundamental difference between uploading photos to an album or posting directly to the users wall? I want to provide the user with the best experience possible on my application, I also want to use an approach that also benefits my application in terms of social promotion.
Well, it's the same as when done manually, isn't it? Posting to wall gives you one post with photo in it, and posting to album gives you link to album with some thumbnails on your wall.
So from reading around a bit on this issue, it is becoming apparent to me that I cannot post an image/photo from my app to my wall as a source attachment. The only way I can show an image in a wall post is by linking to an image on the internet. I can only post a photo form within the app to the photo album on facebook.
So my question is, does anyone know how I can get my in-app image posted to my facebook wall (and not posting the image to the photoalbum)?
Sounds like you have the same problem I had just a couple of weeks ago. Did you also get the error message starting "FBCDN image is not allowed in stream..."?
It seems you've already figured it out, but since Facebook isn't quite as informative towards developers as they could, other readers may benefit from this, too.
Your app can easily send photos to the user's Facebook photo album
Your app can easily post to the user's News Feed
You can even use Facebook Graph API to pick up the ID of the photo you just sent, and use that to assemble the URL for the photo (the URL works just fine – typing it into your browser will show the photo, no problem)
BUT your app simply cannot use the photo URL in any News Feed Posts. And contrary to what one might assume, this is not a bug or any other problem you could fix, but a Facebook policy since summer, 2010.
Here's the official RSS feed stating their decision:
Serving Images in Stream Stories Jun 18, 2010 3:21pm
We no longer allow stream stories to contain images that are hosted on
the fbcdn.net domain. The images associated with these URLs aren't
always optimized for stream stories and occasionally resulted in
errors, leading to a poor user experience. Make sure your stream
attachments don't reference images with this domain. You should host
the images locally.
In conclusion, if you must have the News Feed post, you need to host the photos on your own server and link to them in the post, as Siegfried said. Although, some successful developers would argue that if you want to make your app scalable, in case it becomes the next big thing in App Store, avoid using your own server (See the Pulse News app's makers comments here: http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-sd/id395631522# - hack #3)
As for me, since my app's so tiny, and I'm a small-time developer, it didn't make sense to start hosting stuff on a server of my own, so I just settled to uploading the photo to the user's Facebook account anyways and using the photo caption to tell the user's friends what I had to say, instead of the wall post.
I think you should use a server with some php scripts - then use ASIHTTP library or sth similar to upload your photo there - as a result you should get a link to the photo on your server. then use it while publishing to fb.
sounds scary but it's not that bad - ASIHTTP is very straightforward, there are tons of php scriptw for uploading photos on the net
Facebook now allows images in the wall posts that are hosted on fbcdn.net domain. It may not completely answer your question as you don't want the images in the photo album. But here are the steps.
Get photo_upload permission from the user
Once granted, upload photo to an album (users can only post photos to their own albums)
In the callback, you get the id of the photo object just posted.
Get properties for this photo object via another graph api call.
In the callback, you get all the properties - search for the object url
Create a wall post and use the retrieved url (in step 5) in the attachment.
It will display the image in the wall post. However, if you don't want to upload images to user album, you still need to host the image somewhere before you can include the link.
I asked this question a while ago and figured out an answer too. Here you go:
Facebook Connect on iOS - Picture doesn't display with wall post
I am developing a greeting card application. Greeting card should be posted to multiple friends' wall. I had used graph API to upload picture to friend's wall using [friends_Id]/photos post. Using this approach Facebook will create an album in to that user account automatically rather than creating or sharing photo to friends. After photo upload this newly created album will be shared to friends. This is not the option which I'm looking.
Facebook will use the same album for other photo uploads. Since album was shared to some friends, all previously shared friends will get notifications on their news feed for this new photo upload. So I omitted this approach.
Second I used posting image link to friend's feed. This time Facebook won't allow me to post image links with hosted on their server saying that FCDN images are not allowed in stream.
Hosting a server will be an expensive option for me.
Third I used photo tagging approach. This work well. But this is not the required option.
In Facebook website there is an option to share a photo in an album to my friends wall. Can I implement this approach using graph API? Is there any option to share an uploaded image to friend's wall using graph API?
I hope that my question is clear to you... Please help.. :)
Perhaps this approach will work you. See https://developers.facebook.com/blog/post/526/ where you can post to a wall and refer to an existing photo, or basically attach a photo you own to a friend's wall. So here are the steps:
1) Upload the photo you are interested in sharing to your album. Note the photo ID.
2) Send an HTTP POST to https://graph.facebook.com/[FRIEND_ID]/feed with the object_attachment parameter set to your photo ID.
Please note that you will need an access token with publish_stream permission.
Can I upload photos using Facebook API but not post to wall in Facebook?
What I use is the photos.upload in the API.
If it cannot be avoided, is there any way to delete that wall post so that I don't have to do it manually?
Documentation of graph API (http://developers.facebook.com/docs/reference/api/photo/) mentions the following:
If you would like to suppress the
story that is automatically generated
in the user's feed when you publish a
photo (usually because you plan on
generating your own), you can add a
no_story=1 parameter. In this case,
the user will receive a notification
that your application has uploaded a
photo.
Adding the same parameter to the legacy REST API seems to work for me
Let me answer my own question:
It's about the permission problem. We can set the permission so that the photos do not publish to wall.