The curiosities of Facebook's developer offering
In the process of building multiplatform applications which integrate with social platforms I have been required to investigate Facebook's developer tools and processes.
Unfortunately the process has been somewhat painful. I thought I would document the curiosities I encountered such that anyone else encountering them can resolve them with more ease.
The review process
Whilst Facebook do provide documentation for their (relatively) new application review process, it is (at the time of writing) somewhat lacking and unclear. That said, I strongly advise anyone submitting an application for review to read all of the documentation thoroughly before attempting a submission.
For some reason Facebook have released an extremely well reasoned review process yet implemented it extremely poorly. There is/was a nice video outlining what exactly the review process is, and what it seeks to do. I cannot however find it (now), and am suspicious that it may have been removed because the gentlemens smile (in said video) did not match a realistic developer experience.
The main problem is that should you have any issues with your submission, you will more than likely receive a cryptic, generated response. The response that I received was along the lines of 'Your open graph action does not post on all platforms' which whilst strictly true could have said 'You are sharing a link rather than the open graph action under review'.
Whilst I did ask various Facebook staff members for comment, none was received. I can only assume that the tools provided to reviewers only allow for preselected responses. As such if you do have any issues it may well be a guessing game attempting to get it resolved.
Fortunately you can contact support.. right?
Nope. Facebook do not provide a support service to developers. At least not a generally available one. They do provide support to developers working under business umbrellas, but even then there are undisclosed requirements for being allowed help using their system. After playing the 'review process guessing game' for a number of rounds, I discovered this option and went through the motions of associating my business on Facebook solely for this purpose.
Depressingly, once I had access to this support option, I was helped by an extremely helpful individual and I was able to resolve the issue that had caused numerous review failures in 3 minutes. I.E. As soon as Facebook told me what the issue was, I fixed it.
I was also able to use this platform to resolve an issue whereby my application dashboard was 'out of sync'. That is to say, I could not submit a review because the platform thought my application was already under review when it was in fact not.
Again.. I questioned various Facebook staff as to why they dont just implement a proper review process and received no response. I have told them that it would save both them, and their developers a lot of time and stress.. but nothing.
If you cannot get any support, your only bet is the Facebook developer community. This is a closed group for developers to ask questions and discuss development related issues. Whilst there are Facebook staff members in the group, again getting appropriate support is very difficult.
The developer community does however provide a little insight. With the greatest of due respect, a lot of the questions posted within the group are from inexperienced developers asking wide berth questions like "How do I do Facebook with PHP". I imagine that receiving many thousands of such requests through an open support channel would be hellish to manage.
That said if you are scratching at walls, unable to get anywhere.. you may find a helpful developer here who can point you in the right direction. I also feel like I cannot post something like this, and not offer my own support. If you have an issue that you cannot get to the bottom of, I am happy to try and help.
Obviously building a solid API on such a massive scale is an extremely difficult task. The Facebook team have done a marvellous job with their various SDKs, developer tools, and debug tools. That said, I cannot write about all the positives, so I'll stick to writing about the few negatives.
I encountered two issues which bemused me. Both pertained to errors, and error handling.
In my web application I was utilizing a version of the PHP SDK that was maybe a month old. On submitting an open graph request for a custom story, I received an error response suggesting that I had not authorized the 'User Messages' capability. I had. After some futile debugging I decided to upgrade to the very latest SDK and the problem was gone. I am happy to excuse a small bug in a massive and complex product but I wouldn't call returning/processing a completely incorrect error response a 'small bug'. This occurred at a similar time to the synchronization issues with the review dashboard (outlined above), and as such the upgrade could have been a false positive. Either way it was certainly a serious issue.
The second issue was one pertaining to responses. Whilst attempting to share a link through the API some unchanged code suddenly started failing. I received the following error response:
[message] => An error occurred while processing this request. Please try again later. [type] => OAuthException [code] => 368
Not only do you have to guess your way through the review process, but you have to guess your way through error handling too ;)
Fortunately Googling the error code suggested that the error code may well pertain to the link being flagged in some capacity. I was able to resolve the issue but it presented another curiosity to me.
The issue was that my link (a url shortener link) had previously pointed somewhere else (stupid I know). Facebook had cached the previous content (something slightly suspicious) and was flagging it. I'll give Facebook a break here on the basis that caching the Internet is pretty hard. I just thought I'd mention it in case someone else encounters a similar issue.
Whilst this post is primarily negative, it merely seeks to outline some curiosities with Facebook's developer offerings, and perhaps outline some resolutions for people encountering problems.
As mentioned what Facebook are doing.. and at the scale they are doing it.. is mightily impressive. That said, I just cannot fathom as to why Facebook have not 'polished' such important product offerings.
You do not see many (if any) issues with the main public production Facebook website. Why has the same attention to detail not been applied to the developer offerings? In many respects the open graph, and developer integrations allow an open medium for Facebook to expand its own offering by proxy of third party offerings. Surely that is incredibly important?
Further to that, whilst Facebook operates on a massive scale, they also hire on a massive scale. They (as I understand) have a massive team of incredibly talented developers.. I cannot understand how you can build infrastructure and tooling to handle billions of status messages yet cannot provide reviewers a text box to tell people why their reviews have failed..
The only other possibility is that the reviewers have a text box, but are on some sort of devillish commission structure and have to get through 1.6 million reviews every hour ;) Either way.. not cool.
I suspect (and hope) that Facebook will at some point get around to polishing their offering. If not I can not helpu but feel that they should at least put a BETA sticker on it.