Cris
Cris

Reputation: 12194

OpenGraph: how can i specify a filter in FB.api?

I have built a Facebook app using OpenGraph that permits the users to write reviews on concerts, so that I've defined a concert_id attribute on which the user can insert a review.

Now I would like to show all the reviews inserted for a certain concert_id but cannot find a way. If I do (in JS)

FB.api('/me/MY_APP:action', { limit: 0}, function(response) {
    console.log(response);
});

I get all items. This app has to be consumed by mobile, I think it is bad to get all items and, then, filtering only the concert_id i need. What do I have to do to apply a where condition in OpenGraph to a custom action?

Upvotes: 4

Views: 1351

Answers (5)

Kathir
Kathir

Reputation: 4377

i don't know exactly but try this

if (session.authResponse) {

    FB.api('/me', {
     fields: 'name, picture' // here mention your fields
    },
    function(response) {
      if (!response.error) {

//here response value });

Upvotes: 0

Nitzan Tomer
Nitzan Tomer

Reputation: 164139

I don't think that you can pull that off with the JS SDK.

You can do that in your server though, and since this is a mobile app (or has a mobile version) then that's another good reason to remove this from the client responsibility.

In the server side you can ask facebook for the published actions as you posted, filter them and then return the response. Another thing that you can do is to save each published action in your db (on each action post you should get an id back from facebook, just persist that) and then you can easily filter the published actions according to what ever criteria you want/need (since you are no longer restricted by the facebook api).

The open graph thing is still pretty new and not tat mature, for example you can't use FQL with it, something that could have been handy for your case. Regardless though I think that a server solution is best for calculations when mobile is concerned.

Upvotes: 1

Raveesh Bhalla
Raveesh Bhalla

Reputation: 921

The Facebook API will not return individual published objects for a particular action, but that's not your only problem. By the look of it, you're trying to bring in ALL the reviews given for a concert, right? (Meaning those by other users too).

The "/me/" part of the Facebook API call will only return those published actions made by the user that is currently logged in. That won't work for you, as you want those of all your users

The only suggestion I can give is to create a simple web service, where you store all the reviews given for the various concerts. Use this service to pull in reviews given for a particular concert. (I use a similar methodology for reviews in an app of my own).

Upvotes: 2

Chirag_CID
Chirag_CID

Reputation: 2224

I dont understand javascript or opengraph..

But when I required in JAVA to fetch reviews made by any user I have used FQL for that and It retrived me all the reviews and FQL also used to fetch all the tables related to Facebook.

Upvotes: 2

Gunnar Karlsson
Gunnar Karlsson

Reputation: 28470

As far as I can tell from the API and the Facebook developer pages, it's not possible to filter a call by custom action property using the public Open Graph API.

Two options I can think of:

Option 1:

Implement the category filter by creating custom category objects:

if "review" is a custom action and

GET https://graph.facebook.com/me/[name_space]:review

returns all review actions then

GET https://graph.facebook.com/me/[name_space]:review/scifi_movie
GET https://graph.facebook.com/me/[name_space]:review/action_movie

return actions specific to movie type, where scifi_movie and action_movie are custom objects. You would need to create one object type for each category.

Option 2:

Implement a custom action for each category, e.g.

review_scifi_movie
review_action_movie 

These are not particularly elegant solutions but perhaps useful as a hack if nothing else works and you really don't want to do filtering on client side.

Upvotes: 5

Related Questions