The biggest problem I've found with the facebook api is their sloppiness in documentation - they often have multiple conflicting versions of api documentation online, with no structured versioning in place.
Several times I've seen functionality removed with nothing in the documentation indicating what had changed.
Let me publicly say something I've said privately: I will pay up to $1000/year for a subscription to a service that 1) documents the facebook APIs, 2) monitors examples and common usages and lets me know when they stop working, and 3) provides a weather report for the Facebook API servers letting me know when they're slow or sick.
Heck, I might pay more. We waste far too much developer time dealing with the problems Jobu so rightly points out.
Agreed. Every advertising agency that works with Facebook would happily pay a subscription fee like that for the number of head hours it would save them.
Documentation's a first, because there's no proper reference, and sometimes the thing you want is buried within another page. Or there are conflicts.
There's a certain lack of clarity and even when you can figure it out some of their decisions are strange. There's barely anything on performance and caching and overall they appear to have geared the API more towards the copy-paste plugin generators they have. I've never seen a 3rd party FB app (apart from the one linked on this page, Clarity I think, which I've only just heard of), and all the Android ones I came across were just site specific browsers wrapping the mobile page.
Compare it to Twitter, which has supported countless apps on practically any platform you can think of and appears to have actually considered a developer will use it. It's nicely laid out and appears to have proper thought put into it.
What really frustrates me is that there are some places in which options exist but simply aren't documented, and in other cases the various call options are listed but with no explanation, so you have no clue what each option actually does for you.
Several times I've seen functionality removed with nothing in the documentation indicating what had changed.