Facebook platform: what data can I get? - facebook

I want to get some data from companies' Facebook pages, but I don't know what kind of data I can expect. Here is just a small set of properties I can use, although I can see that I can get more according to their official example:
{
"id": "19292868552",
"name": "Facebook Platform",
"picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/50414_19292868552_7650_s.jpg",
"link": "http://www.facebook.com/platform",
"category": "Product/service",
"website": "http://developers.facebook.com",
"username": "platform",
"founded": "May 2007",
"company_overview": "Facebook Platform enables anyone to build social applications on Facebook and the web.",
"mission": "To make the web more open and social.",
"fan_count": 1522363
}
On the official site it is written:
Pages in specific categories have
additional fields depending on
category.
But what does that mean? Is there a finite set of properties that can be put on a page, or can a company choose what they want to put? Where can I get the complete list of fields that can be on a page?
Thanks,
Ivan

When you create a page inside Facebook, it lets you choose which type of page you want to create e.g. product, service, company, etc.
Depending on the category that you choose, I guess that there will be some instrinsic information fields for your page. Anyway, I don't think that one category is much different than the others, you should be fine with the standard fields that you have outlined in your question.

Related

How to mark up a Person's websites in Schema.org markup

I'm using Person to represent my user's profiles. Users are able to add links to other websites, e.g. their personal website, their Twitter profile, or just the website of an important project of theirs.
The latter is the reason I'd prefer not to use the sameAs property - plus, I'd like to be able to show the names they give those websites as well.
What property would I be able to use?
Although #unor removed it from the question, I did note that I am marking this up using microdata - which means I can't use #reverse like suggested in this answer.
What I ended up doing for now is abusing sameAs for this, and wrapping it in a Role so I could use roleName to specify the relation of the website to the profile. So in JSON:
{
"sameAs": [
{
"roleName": "My Twitter profile",
"sameAs": "https://twitter.com/example"
},
{
"roleName": "10001 innovations in scholarly communications",
"sameAs": "http://innoscholcomm.silk.co/"
}
]
}

Google Structured Data Delegation

I am attempting to get events to show up in the Google Knowledge panel for a business. I have created an organization SD JSON object in the header of the business homepage and delegated the events to another website with proper event markup (microdata) on the page.
I used the following documentation
https://developers.google.com/search/docs/data-types/events#delegation_markup
I have had Google reindex the page and the structured data object shows up in the cached version of the website. I have also waited 3 days before posting here to ensure it had time to get captured by Google and related in searches.
I would like to know if there is something wrong with the following markup, etc in order to get the delegated events to show up in the Google Knowledge panel.
<script type="application/ld+json">
{
"#context":"http://schema.org",
"#type":"Organization",
"legalName":"Diversified Design and Manufacturing",
"address":"165 Boro Line Road, King of Prussia, PA 19406",
"email":"www.diversifieddesignmfg.com/",
"telephone":"(610) 337-1969",
"event": "http://www.burbio.com/groups/diversified-design-and-manufacturing"
}
Also I noticed most release notes and documentation refers to MusicGroups, etc. Is event delegation supported for Organization type SD objects?
Google provides the following information for trouble-shooting events:
Troubleshooting events in Knowledge Graph cards
Knowledge Graph card display is governed by a complex algorithm, so if you don’t see your artist or your artist’s events in the Knowledge Graph card, try these steps:
Make sure that the artist is in both Wikipedia and MusicBrainz, and that the artist's official home page is recorded properly on both those sites.
For events missing from a Knowledge Graph card, check that the events
are shown correctly with no errors in the Structured Data Testing
Tool.
If all fields look correct, report the missing events using the Feedback link under the Knowledge Graph card in Google search.
Please report it asgeneral feedback and be sure to use the term events in your description of the problem.
It also states that event information should come from the *ticket seller's website** and that you cannot use delegation to link to your own website.
SOLUTION -
Firstly, it appears only certain artists are expected to appear in Knowledge Graph Events.
Secondly, your structured data does not contain any information about the specific event, eg start or end time, location or name. The event field must be of type http://schema.org/Event OR a hyperlink to a webpage with http://schema.org/Event markup - the link you included does not refer to any specific event.
If the destination does not contain http://schema.org/Event structured data you can include it manually by nesting it inside http://schema.org/Organization (not delegate) event data inside the Organization as follows:
<script type="application/ld+json">
{
"#context":"http://schema.org",
"#type":"Organization",
"legalName":"Diversified Design and Manufacturing",
"address":"165 Boro Line Road, King of Prussia, PA 19406",
"email":"www.diversifieddesignmfg.com/",
"telephone":"(610) 337-1969",
"event": {
"#context": "http://schema.org/",
"#type": "Event",
"name": "Chinese New Year Festival",
"url": "http://chinesenewyear-2017.org/festival"
"startDate": "2016-01-28T06:00",
"description": "The best Chinese New Year party in 2017",
"location": {
"#type": "Place",
"name": "Missoula, MT",
"url": "http://www.missoula.com/",
"address": {
"#type": "PostalAddress",
"addressLocality": "Missoula",
"addressRegion": "MT"
},
}
}
Google requires certain fields to be included, such as startDate, Location, see at the bottom of this page from google's documentation
Finally, in your example code the email field contains a website URL - not an email address.

Can I aggregate Facebook Likes, Tweets, and Google Pluses?

I'm building a voting application on my new website, cabinethardware.org. I'd like the voting to be done in such a way that when someone votes for a project (to receive a $1000 rebuilding grant) that they are encouraged to plug the project via social networks. My programmer has had difficulty with the application, and it occurred to me that one way of doing it is to just put like, tweet and G+ buttons on the site and add them together. So if a project gets 24 likes, 12 tweets, and 18 G+, it would have 64 votes. It doesn't bother me if someone votes on all three engines.
Before a project is eligible for a grant, it must receive 100 votes. My question is, is there a way that I can aggregate the likes, tweets, and G+ so that I can see on the backend how many votes each project has, without going to each project and adding them up by hand? Also, I'd like to display to customers the combined total.
Does anyone know of a way to combine the count of these three?
For Google+, you would only need to perform one API call to the Google+ APIs that would be searching the Google+ public data. Searching the Google+ public data is demonstrated in the API explorer.
The post response contains information about reshares and +1s:
"verb": "post",
"object": {
"objectType": "note",
"content": "Setting up a server-side flow project that accesses Google+ data using the .NET stack can be a little tricky, I walk you through it in this blog post.",
"url": "https://plus.google.com/109716647623830091721/posts/g8LjdGAXdDc",
"replies": {
"totalItems": 0,
"selfLink": "https://www.googleapis.com/plus/v1/activities/z125srm50lf1slxrd04cfftatqyoglnoqio/comments"
},
"plusoners": {
"totalItems": 6,
"selfLink": "https://www.googleapis.com/plus/v1/activities/z125srm50lf1slxrd04cfftatqyoglnoqio/people/plusoners"
},
"resharers": {
"totalItems": 0,
"selfLink": "https://www.googleapis.com/plus/v1/activities/z125srm50lf1slxrd04cfftatqyoglnoqio/people/resharers"
},
For Facebook, you can use the Pages API to count likes for your page, you can experiment with this in their API explorer.
The following data shows their response data:
{
"about": "Build and distribute amazing social apps on Facebook. https://developers.facebook.com/ ",
"company_overview": "Facebook Platform enables anyone to build social apps on Facebook, mobile, and the web.\n\n",
"is_published": true,
"talking_about_count": 39241,
"username": "FacebookDevelopers",
"website": "http://developers.facebook.com",
"were_here_count": 0,
"category": "Product/service",
"id": "19292868552",
"name": "Facebook Developers",
"link": "https://www.facebook.com/FacebookDevelopers",
"likes": 952596,
"cover": {
"cover_id": "10151121467948553",
"source": "https://fbcdn-sphotos-f-a.akamaihd.net/hphotos-ak-ash4/s720x720/299374_10151121467948553_45631061_n.png",
"offset_y": 0
}
}
Likes are just a member in the response data.
For twitter, you can query for mentions of a user with their search API and passing a search string for the user as #user. A count of the objects within results is going to be your mention count. The response data is a little too much to paste in here but here's an example query using their API.

Displaying Different Copy / Images Based on the Number of Likes

We're working on developing a program that will (hopefully) automatically swap out creative with new creative once a certain like threshold is met (i.e. if 100 people like the page, something new appears). Can we add coding so our system is able to tell how many "likes" are generated? I know that the number of likes are displayed, I'm just not sure if there is a way for a program to actually read how many likes there are.
I don't see if in any of the Facebook attributes in the developer's platform.
What you'll have to do is acquire an access token for your page and then query the facebook platform for the number of likes periodically (possibly with a cron job of sorts).
You can read more about how to get the page access token at this URL
https://developers.facebook.com/docs/authentication/
Facebook has given us a great took to help us mine all the data it holds - its called the Graph API Explorer and with it you can see what data will be returned when you query the API. When you query the API with only the page_id you'll get a response similar to this :
{
"id": "XXXXXXXXX",
"name": "My Awesome Page",
"picture": "foo.jpg",
"link": "https://www.facebook.com/pages/XXXXXXXX",
"likes": 345,
"category": "Product/service",
"website": "XXXXXXX",
"founded": "2011",
"description": "...",
}
For more information about how to use the Graph API you can see this link :
https://developers.facebook.com/docs/reference/api/
Facebook does provide good documentation:
http://developers.facebook.com/docs/reference/api/page/
As you can see there, there is a field "likes" containing the number (count) of likes for a page.

Facebook ID from URL

Given a facebook url such as http://facebook.com/cnn, is there any way to get the ID of that page short of scraping it?
It is better (and legal) to do this with graph API. Just perform API request to https://graph.facebook.com/cnn and get id from the response.
Here is the response for cnn:
{
"id": "5550296508",
"name": "CNN",
"picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs178.ash2/41813_5550296508_728_s.jpg",
"link": "http://www.facebook.com/cnn",
"category": "Company",
"website": "www.cnn.com\nwww.ireport.com\n",
"username": "cnn",
"company_overview": "TRIVIA FROM THE CNN TOUR...",
"products": "CNN US...",
"likes": 1689936
}
Facebook's own Graph API supports it. From the documentation:
The "ids" query parameter also accepts URLs. This is useful for
finding IDs of URLs in the Open Graph. For example:
https://graph.facebook.com/?ids=http://www.imdb.com/title/tt0117500/
As of Today(28th July 2015), There still exists an easy way to get page(or user's) id.
Browse to facebook page(or user) url. The syntax is https://www.facebook.com/[username or pagename]
Right click to view source and then search for string "pageID": in case of page. The numeric id next to searched string will be id.
In case of user, search for "uid":.
Been working with it today. So, for people who want to know how this works. Use this:
https://graph.facebook.com/<the_fb-address>?access_token=$accessToken
And remember: this is only for pages. Not user pages/friends' timelines etc.
Those will have to approve your Facebook App first before you can read their profiles.