December 2013: Graph API search now returning less/different results than use facing search - facebook-graph-api

I have a small app for my private use that performs Graph API search on public posts - it basically has some extra filtering in it and pagination/time span options that makes it more useful than the user facing search. It has been working fine for about 6 months, but on or about mid-December 2013 or so, Graph API search started returning far less and different posts than the user facing search. It is easy to test this, in the Facebook developer's explorer tool, you can type a query like: "search?q=cat stuck tree&type=post" and then do the same search in facebook with "cat stuck tree" on public posts and see the differences. Previous to mid-December 2013, these searches returned the same results. Does anybody know what has changed? (I made no changes to my code).

It's because Facebook decided to just YANK away the possibility to search public posts. YET AGAIN. Sorry, but facebook totally sucks these days. They really do not care about the people using their platform. It goes from bad to worse.

Related

Ember Way to Add Rss Feed without third party widget, Front-end only

I am using Ember 3.0 at the moment. Wrote my first lines of code in ANY language about 1 year ago (I switched careers from something totally unrelated to development), but I quickly took to ember. So, not a ton of experience, but not none. I am writing a multi-tenant site which will include about 20 different sites, all with one Ember frontend and a RubyOnRails backend. I am about 75% done with the front end, now just loading content into it. I haven’t started on the backend yet, one, because I don’t have MUCH experience with backend stuff, and two, because I haven’t needed it yet. My sites will be informational to begin with and I’ll build it up from there.
So. I am trying to implement a news feed on my site. I need it to pull in multiple rss feeds, perhaps dozens, filtered by keyword, and display them on my site. I’ve been scouring the web for days just trying to figure out where to get started. I was thinking of writing a service that parses the incoming xml, I tried using a third party widget (which I DON’T really want to do. Everything on my site so far has been built from scratch and I’d like to keep it that way), but in using these third party systems I get some random cross domain errors and node-child errors which only SOMETIMES pop up. Anyway, I’d like to write this myself, if possible, since I’m trying to learn (and my brain is wired to do the code myself - the only way it sticks with me).
Ultimately, every google result I read says RSS feeds are easy to implement. I don’t know where I’m going wrong, but I’m simply looking for:
1: An “Ember-way” starting point. 2: Is this possible without a backend? 3: Do I have to use a third party widget/aggregator? 4: Whatever else you think might help on the subject.
Any help would be appreciated. Here in New Hampshire, there are basically no resources, no meetings, nothing. Thanks for any help.
Based on the results I get back when searching on this topic, it looks like you’ll get a few snags if you try to do this in the browser:
CORS header issues (sounds like you’ve already hit this)
The joy of working with XML in JavaScript (that just might be sarcasm 😉, it’s actually unlikely to be fun)
If your goal is to do this as a learning exercise, then doing it Javascript/Ember will definitely help you learn lots of new things. You might start with this article as a jumping off point: https://www.raymondcamden.com/2015/12/08/parsing-rss-feeds-in-javascript-options/
However, if you want to have this be maintainable for the long run and want things to go quickly and smoothly, I would highly recommend moving the RSS parsing system into your backend and feeding simple data out to Ember. There are enough gotchas and complexities to RSS feeds over time that using a battle-tested library is going to be your best way to stay sane. And loading that type of library up in Ember (while quite doable) will end up increasing your application size. You will avoid all those snags (and more I’m probably not thinking of) if you move your parsing back to the server ...

List all friends which a user is also following using Facebook Graph API

As a personal utility, I'm trying to write a short script (preferably in python but essentially I'm looking for the proper REST calls) to get a list of all my friends who I am also following (actually, list all friends and for each one see whether I am also following them).
I tried playing with the API but:
Could not get the pagination right. There seems to be a link to the next results "page", but when I follow this link, the next page is always empty. I do realize this is mainly do to my incompetence with this API, but I just didn't think it would be so difficult.
When I view a specific friend's connection to my user, I can't seem to find this information. This data is obviously stored somewhere, as it is available using standard methods (i.e, open up a friend's facebook page in the browser and look for the "Following" part)
This may sound like a silly question and I did try playing around with the graph explorer, after generating a token with all possible permissions, but I did not get far.
Please help me make my life a little easier by not having to resort to the manual way of opening up every single friend page, this sounds exhausting.
PS: This may sound like a personal question and not very professional, but as I was struggling with this task, I though it may be of use to other individuals looking for this functionality
Thanks!
Listing all friends isn't possible with v2.0 API. https://developers.facebook.com/docs/apps/upgrading/
As long as you have an application that can still run v1.0 API calls then you can do an FQL call
SELECT is_following, target_id FROM connection WHERE source_id=me() AND target_id IN (SELECT uid2 FROM friend WHERE uid1=me())

Since vs updated_time vs created_time

I'm writing an app to collect facebook posts matching a certain search term, and I'm trying to fetch only new or updated posts since the graph.facebook.com/search endpoint. I've concluded from debugging that this particular endpoint uses time-based pagination (since, until), so here's my process:
fetch new posts using the most recent 'since' time (default to now - 5 mins at start)
update my 'since' time to the most recent created_time or updated_time from the list of return posts
sleep X seconds, repeat
However, I can't even see my own newly created posts. I do get some results, but they seem random in terms of why they match my search and not my own. For testing purposes, I'm using a user-level access token generated using the FB developer tools, so I should definitely not have any permissions issues restricting me from seeing my own content.
What gives?
Edit: More testing reveals that I can randomly receive SOME of my own posts, but there appears to be no rhyme or reason why one post shows up and the others don't. For example, I just posted 3 posts and received the second one via my app. The first and third are nowhere to be found.
I think what you are seeing here is an artefact of the consistency model Facebook is using. You can see another example of this when you look at your feed from two different devices. If I look at my feed from my smartphone and then go and check out my feed on my PC, sometimes I see the same items and sometimes there are items I saw on one device, that I didn't see on the other. This is because Facebook uses Eventual consistency.
In simple terms this means that given enough time, all data clusters will be consistent, but this is not guaranteed at any given time point. The bad news is: there is not much you can do about this. It's just a fact-of-life when working with very large distributed systems (and Facebook is one of the largest in the world). At this scale it is just not practical, where technology is today, to keep all copies of the data completely in sync at all times. What I think you are seeing is two requests serviced by two clusters which are currently not 100% in sync.
Here is an interesting read on the subject.
And here is something from Facebook. You can skip to the Consistancy section of the page (Although, I would recommend reading the entire post. It is a very interesting overview of Facebook architecture).

Has Facebook quietly retired public access to daily_active_users field on the Graph API?

Typically, the Graph API Application object contains the following public fields: daily_active_users, weekly_active_users, and monthly_active_users (see Graph API reference.)
I have been unable to access these using FQL or Facebook's Graph Explorer for a couple of days.
Furthermore, I note that AppData.com's chart of daily activity seems to be broken. I've contacted them to ask what their experience has been.)
Despite this, the fields are still in the documentation and available as part of the (new! improved!) Graph Explorer which might lead one to think that they're still supported.
Has anyone seen any communication from Facebook around this issue?
Is this a very bad sign?
I have exactly the same problem that begun around yesterday or the day before.
AppData seems to duplicate the numbers of the previous days at the moment.
FQL seems to work somehow: (Click this for Zynga Poker)
But this not a good solution - I also need the Graph API back.

Facebook comments box: Possibility to really set num_posts = 0?

I'm using the comments box on my site to get more users socially involved and at the same time I'm reading the Graph API to print those comments on the same site to make it crawlable for search engines. Problem is now that for a real user the comments show up twice (through my graph api print AND through the actual fb:comments plugin box).
Any ideas how I could solve this ?
Would prefer to show only the comment-field from FB and use my own echo to show the comments as this way enables it to REALLY moderate the comments (not just set it to limited visibility). Thanks for any suggestion!
I found some sort of solution for my problem. It's not perfect, but the closest one can get to what I wanted:
Instead of directly returning the query from the Graph API, I attached a script to the comment.create event. This script writes the new comment into my database, where I can moderate again. This way I have to double-moderate, but therefore I don't have any unwanted comments on my site.
I also found out that with the old deprecated comment-box you can set the comments that get natively shown by facebook to 0. That way only the already moderated comments get shown by my own script coupled with my database. It works the way I want it, even for friends of the unwanted commenter.
Hope that helps someone else too!