Facebook Graph API locale parameter broken? - facebook

This API URL gives me the front page of VitaminWater's Facebook page (http://www.facebook.com/vitaminwater):
https://graph.facebook.com/50540568485?fields=id,name,link,picture,posts.fields(message,picture,link,likes)&access_token=...
They have a good deal of content targeted at people in Germany, but no matter what I do, I can't get the API to return it - it always gives me English content. I've tried setting the parameter "locale=de_DE" per Facebook's API reference documentation, as well as passing headers such as "Accept-Language: de" and "Accept-Language: de-DE" None of this works. Is this just broken, or is there some other way to retrieve the content for a specific locale I should be using?

I have no solution but I can confirm that something in API is broken. We are working with monitoring tools from different providers and since March 13 this problem persists and hasn't been solved. Posts from personal and fanpages appearing only randomly in German language.
From an information by one of the tool providers I have learned that they are working together with FB to identify and fix the problem. So maybee it is frustrating to wait but this might be the better approach.

Related

Can you extract Facebook data by date range using Facepager?

I've been using Facepager for research purposes for almost a year now and I can't figure out how to extract data - public posts, comments and likes from a page, for instance - by date range. While other programs such as Netvizz gives me this option, Facepager seems to fail to do so.
Thank you.
You can use the since and until parameters for this, e.g. set since (left side in parameter settings) to 2017-09-13 (right side) when fetching posts of a page. See the section Time Based Navigation in the Facebook Graph API.
Keep in mind that accessing very old data with the API is limited by Faceebok. Most social media platforms are aligned to the presence :)
BTW: we just opened a Group on Facebook for getting help.

ColdFusion - OAuthException - This authorization code has expired. [code=100]

I am having a go at trying to get the Facebook API SDK for ColdFusion working.
https://github.com/affinitiz/facebook-cf-sdk
I have followed all the steps and it seems to work well (using only server-side login).
However, if I leave the page for say, an hour, when I return and refresh the page (which was showing my profile name and friends list) it shows up with an error that I am unable to get rid of, unless I clear the cookies.
Is there something I am missing with this FB login? Am I meant to be checking against something manually in order to persist the session?
Looking at my cookies, I have the following stored:
fbm_155030275875
fbsr_155030275875
CFID
CFTOKEN
It's all new to me, so I'm a bit lost. I can't see anything in the docs for the SDK about this and Googling the error brings nothing.
I have attached a screenshot of the error.
I'd appreciate any help you can offer!
Thanks,
Michael.
I'm not familiar enough with that particular project, but in general, your code should be requesting the various Graph API calls, and requesting the token as necessary. If the token has expired, you request a new one. I'd expect the facebook-cf-sdk product to do this, but again, I'm unfamiliar with it.
Good news is, the Facebook Graph API is just a series of HTTP calls. See my talk at NC DevCon for an example of logging in and making some graph calls: (a bit long; go to about the 1:42:00 mark)
http://textiles.online.ncsu.edu/online/Play/61d0900d63fd4c1cb862622d1c8e13521d?catalog=35211b84-031b-4a18-8875-506f09b9b3a7
GitHub repo:
https://github.com/bdcravens/ncdevcon2012-handson-auth (note the branches - check out the step4 branch)
These don't answer your question 100%, but they may be a good starting point for you.
Ok, I figured out how to solve this issue using a solution someone provided on Github. I just wanted to post this here in case someone else encountered the issue and wasn't sure how to solve it. In my case however, after I applied the solution from that post was I need to do a page refresh. Link below.
https://github.com/affinitiz/facebook-cf-sdk/issues/31

Facebook FB.api('/me/accounts') is not returning list of applications

I have been written a code that retrieves users page list and application list so I can make a page tab connector. And I used FB.api(/me/accounts) for this purpose. It was several months ago and it worked well.
https://www.facebook.com/WEBLAB54/app_337216453020586
But suddenly, Facebook api will show me only a list of pages, not a list of applications. I have tried to find solution online, but it seems that nobody has this problem? Also I went to facebook page for manage_pages permission, and there is no changes in documentation.
Does anybody know what is the problem?
I will put a PHP code just in case, but this code worked fine until few days ago.
function get_user_applications(){
$accounts_data = $this->facebook->api('/me/accounts');
$accounts_data = $accounts_data["data"];
for($i=0;$i<sizeof($accounts_data);$i++){
if($accounts_data[$i]['category'] == "Application")
$users_apps[]=$accounts_data[$i];
}
return $users_apps;
}
You have to keep up to date with Facebook :-)
This change was announced back in December, and is effective as of March 6th:
Removing apps from /me/accounts/
We will no longer show apps under /me/accounts/ in the Graph API. You can access the list of apps a user is a developer on by hitting /me/applications/developer/.
https://developers.facebook.com/blog/post/2012/12/05/platform-updates--operation-developer-love/
In response by default we will get only 25 pages and you have to call api like below to get all the pages
me/accounts/?type=pages&limit=200
Here 200 is an assumption, but you have to specify the limit in order to get more than 25.

Video Tags No Longer Available Via YouTube API?

About a month ago YouTube decided to get rid of it's "tags" from the frontend of their website:
http://youtubecreator.blogspot.com/2012/08/tags-removed-from-video-watch-pages.html
Which also in turn left media:keywords blank through any API feed request as read here:
http://apiblog.youtube.com/2012/08/video-tags-just-for-uploaders.html
The nice thing was for another month or so (until a few days ago) you could still access a video's "tags" or "keywords" through the API by looping through the category term(s)
It seems YouTube has taken that away also and it now only displays ONE category term for each API feed...and most of the time they are the basic YouTube categories like "Music" or "People" etc.
My questions to the YouTube development team is why was this taken away from the API (I understand taking it away from the frontend of the website) and will it ever return in any form to the API?
In the original Creators blog post you guys stated:
"Tags remain an important way to organize and help others find your videos. We strongly encourage you to continue tagging videos -- this will help increase your audience by improving the discoverability of your content."
So if Tags are still important and still utilized for search results...why in the world are they not available through the API anymore?
Any help and/or info would be greatly appreciated as this has completely destroyed the functionality of MANY of my sites! Thank you.
It appears they've made them private and you must use an authorized API request with adequate channel privileges to access them now. This really sucks since I've used them for filtering videos from a channel on a site and making authorized connections to the API via PHP has been complicated for me to get working correctly.
And the fact that this added complication is ONLY for keywords seems a bit ridiculous, but I don't guess the Youtube API team cares.
Unless a WHOLE lot of people complain about it, I doubt they'll add this back as a public.
I just added
Update: This change also applies to <category
scheme="http://gdata.youtube.com/schemas/2007/keywords.cat"> tags,
which were not mentioned in the original announcement.
to the announcement blog post. <category> tags should have been removed for the same reason <media:keywords> was removed, but due to an oversight they were left in unauthenticated API responses for a few weeks. There are no plans to add back keyword information via either metadata field.
If your goal is to have some semantics in the video, Freebase Topics can help. You can for instance do a JSONp call
<script src="https://www.googleapis.com/freebase/v1/topic${item}?filter=/type/object/name&callback=putFBname"></script>
with a small javascript function
<script>
function putFBname(respuesta){
span=document.getElementById(respuesta["id"]);
span.innerHTML=" "+respuesta["property"]["/type/object/name"]["values"][0]["text"];
}
</script>
to get the name of the topic.
Freebase topics come in the API v3.

Facebook Graph API SEO Comments and Profanity Filter

I'm trying to integrate the Facebook comments left on our site in a way in which the content can be crawled by search engines and also for people (although I highly doubt there will be many) who don't have Javascript enabled on their browser.
Currently our Facebook comments are displayed via the use of the Facebook comment social plugin (using the <fb:comments href="MY_URL" num_posts="50" width="665"></fb:comments> tag). This ends up rendering an iFrame (which are mostly ignored by search engine crawlers) so the plan is to render this information and format it with basic HTML. To do this, the comments are pulled using the Graph API - this is then only be displayed to crawlers and people with Javascript disabled.
This all works nicely using the Graph API call (https://graph.facebook.com/comments/?ids=MY_URL), parsing the JSON result and displaying it on the page. The problem is that the <fb:comments> approach filters our results based on a blacklist we have set up on one of our Facebook Apps. The AppId with the relevant blacklist is stored on the page using metadata (<meta property="fb:app_id" content="APP_ID"/>) which the <fb:comments> control obviously must somehow use to filter the comments.
The problem is the Graph API method does not filter any results as I guess no blacklist (or App Id containing a blacklist) is specified. Does anyone know how to specify a Facebook App ID to the API call URL or of another way to not fetch commnents back that violate the terms of the blacklist?
On a side note, I know the debate about filtering content in comments rages on but it is a management decision to implement the blacklist, and one that I have no influence in changing - just incase anyone felt the need to explain the reasons why content filtering is or isn't a good idea!
Any thoughts on a solution?
Unfortunately there's no way to access a filtered list of comments using the API - it might be a reasonably request to have this in the API - you should file a wishlist item in Facebook's bug tracker
Otherwise, the only solution I can think of is to implement your own filter on your side when retrieving and displaying the comments from the API.
According to the Comments plugin documentation the filter on Facebook's side is implemented as a simple substring match, so it should be trivial to implement.
A fairly simple regular expression match should be able to check each comment against a relatively long list quickly.
(Unfortunately, the tradeoff here is that implementing a filter is easy, but you'd also need to write an interface so that whoever's updating the list of disallowed words can maintain the list for both the Facebook plugin, and your own filtering.)
Quote from docs:
The comment is checked via substring matching. This means if you blacklist the
word 'at', if the comment contains the sequence 'a' 't' anywhere it will be
marked with limited visibility; e.g. if the comment contained the words 'bat',
'hat', 'attend', etc it would be caught.
Pretty sure there is no current way of doing this from the graph API, the only thing I can suggest is taking the blacklist and build your own filter