Facebook Graph API. How to get data from public page? - facebook

Sorry for my English.
There is needed to get email, site link, phone number, instagram link, country and city from each page returned from search request. I don't know why, but /{page-id} and /{page-id}?fields={field_name} requests don't return any fields besides 'id'.
How can I get this info by Graph API when I know id of the page?

You have to specify the fields you need in your request. Otherwise you only get a very lightweight page object ;)
In general Facebook sends the id and some name (depending on the object) although there are much more fields in the requested object. This is done, because especially on mobile devices the bandwidth is important and these objects are very small. But as developer you can add some more fields to your request and add the mentioned fields query parameter.
You can then add a comma separated list with all the fields of the requested object. The returned JSON contains all these fields. But you have to be careful, because asking for a field that is not part of an object leads to a request error. So check the Facebook reference for the fields.
Next step for checking why you don't get the fields are possible missing permissions. You can only ask for fields that are public (in sense of public for the API, not necessarily the Facebook page) or you have some special permissions for.
For pages you don't own you need the "Page Public Metadata Access" feature enabled for your access token. Otherwise you don't get any further information for this page.
This is not required for pages you are the admin of.
For more details about the fields topic check the Reading/Choosing Fields section here:
https://developers.facebook.com/docs/graph-api/using-graph-api

Related

Rest API Url for Add Entity Form

Let's say we have a website with user entities. If we follow the general standards for Rest API we would get some of the following urls:
GET /users : View list of users
GET /users/{id} : View specific user
POST /users : Add a new user to list
PUT /users/{id} : Update specific user
I have a page that is a form for creating a new user. To follow Rest API standards, what should the url be for getting this form? Would /users/add be appropriate?
I know the ideal thing would be to have this form as a pop-up modal on the list of users page. But, let's say that's not an option. We must pick a url for getting this page that contains a form for adding a user.
I can't say there's a strict rule about this. I think you can choose the name you want and on my own I did it like you're proposing: /users/add, just make sure you are using the same structure for other entities in your project, e.g. /products/add - in terms of consistency.
As the answer above, there is no universal rule for it. I tend to make my post urls like this /user/addNew

Specify certain values with Facebook Graph request

I was wondering if there's a method to specify certain values of for instance "story" or "name" field when doing a request to the facebook graph. What I'm looking for is something like the following:
/{id}/feed?q={bla}&type={story}
Where I want to check a specific person/page's feed on a certain string of text within each story returned.
Hope you can help me out.
No, that is not possible.
Filtering and searching capabilities of the Graph API are very rudimentary.
When any endpoints support additional parameters of that sort, it is usually mentioned in the documentation.
But there is no way to filter a person’s or page’s feed for specific story types and message contents.

Facebook - interests required List<unsigned int32> although Page ID are strings

I currently developed a solution for custom uploading videos for specific customers.
One of my customers need the ability to specify "interests" for a video he upload.
From the API documentation, interests are:
interests
list
One or more IDs of pages to target fans of pages.Use type of page to get possible IDs as find Targeting Options and use the returned id to specify.
There is some mis-documentation regarding this feature: "find Targeting Options" does not talks about type=page.
But, still, I can search for page, using the "search" endpoint: /2.5/search?q=gsw&type=page and get the ID of the page.
As to my understanding, I can specify a page, for example "Golden State Warriors" fan page, specify its id, and then every user which follows this page will be considered as interested in my post.
So, I think my flow should be:
1) Search for the requested page using the "search" api. Get the page's IDS.
2) When creating the video, specify the ID in the "interests" parameter list.
Now, I need to know how to specify the ID in the interests list - The documentation says it list, but the page ID as a number string...
So in conclusion, I would like some help in verifying that all that I have written is correct and make sense, and also to know how to get the int32 id of a page - is it just mistake in the documentaion?
Thanks!

Including captions in app generated images

I am having a doubt regarding the Facebook policies. It is being stated that:
IV. Application Integration Points
.....
You must not pre-fill any of the fields associated with the following products, unless the user manually generated the content
earlier in the workflow: Stream stories (user_message parameter for
Facebook.streamPublish and FB.Connect.streamPublish, and message
parameter for stream.publish), Photos (caption), Videos (description),
Notes (title and content), Links (comment), and Jabber/XMPP.
.....
Source: https://developers.facebook.com/policy/
And from the examples & explanation page, it says the following for Photos:
You must not pre-fill Photo captions unless the user manually
generated the content earlier in the workflow. These fields are
intended for users to express themselves. Pre-filling these fields
erodes the authenticity of the user voice.
So, my question is: I have seen 99% of the apps (that I used), is auto-filling caption field for photos with say, something like: You can try it by visiting here: http://www.apps.blahblah.com/appname
Isn't that against the facebook policy ? Or they are not flagged because they are using the extended permissions(publish_stream) instead of the post_actions ?
If it is not allowed for both the permissions, then my next question is, how would we tell the users viewing the photo, the link to the app so that these audiences can also try the app ?
Also, if possible, I would like to see a small example of the caption that would be generated in the workflow as mentioned here in the policies: ...You must not pre-fill any of the fields associated with the following products, unless the user manually generated the content earlier in the workflow....
Thanks in advance.
It is against policies, but many apps do it nevertheless.
I think a compromise would be to have the user enter their own message, and then just append a little link to the end of that before posting it.
As for the example, what exactly would you like to know/see? You have the user put in a message through a text field/input box/whatever, and set that as the message while posting the image.
Currently its forbidden. User should fill the whole caption text. Adding anything to it also is also forbidden.
You can watch the Facebook policy video about pre-filling here:
https://developers.facebook.com/docs/apps/review/prefill

Fetch a group object with Graph API using group alias?

How can i fetch data with group page alias ?
Take for example this group: http://www.facebook.com/groups/toroneradio/.
Making request to https://graph.facebook.com/toroneradio gives me back:
"message": "(#803) Some of the aliases you requested do not exist: toroneradio"
Making request to the graph API with the group's id: https://graph.facebook.com/173246339390721 works OK.
It works great for pages though.
Looked at FQL groups table but name is not searchable. (FQL Groups table)
Also looked for some documentation and in FB bugtracking, couldn't find anything.
Is there way to get programaticly the group id from group alias or directly to get Group graph object?
Thanks, in advance!
The Easy Way
If you haven't done so, join the Facebook group which you want to fetch the group ID
Use the Facebook Graph API explorer
Access your list of groups via http://graph.facebook.com/me/groups
Search for the group and the ID will be listed in the object
If you are doing it through your Facebook application, all you need is to grab an FB access token before you do the FB Graph API call (read up the documentation here, especially the Authorization section)
The Hard Way
In case the easy way doesn't work (or if you feel iffy in joining the group), here's the sure-fire way to do so:
Start up Firebug and enable the "Net" tab
Bring up Facebook - check that the Net panl will show all the HTTP requests that's happening
Click the "Clear" button so that you have the panel in the blank slate
Click on the link of the Facebook group that you wanted to retrieve the Facebook ID
Look out for a GET request to generic.php - that would be the very first request, but hunt it down if it's not. Click on the [+] box to expand the details
Click on the "Parameters" tab and you'd see a key-value dictionary of the request. There'll be two fields in there called "key" and "sk", both of which would carry the same value like "group_1656399367890"
The group's ID will be the numeric value after "group_" (in this case, it'll be 1656399367890)
Hope that helps!
By using FQL:
SELECT id FROM profile WHERE username='groupname' AND type='group'
Just figured this out! Do this: http://graph.facebook.com/search?q=[ALIAS]&type=group