Prompting for Facebook Permissions

When authenticating users via facebook, you have a laundry list of possible permissions to ask for.  If you ask for no permissions, the user gets the following login window:


Any requested permissions get displayed in the login window, but some of them get grouped into the same permission category. For example, many of the user_foo privileges get grouped into "Access my profile information", and similarly, friends_foo permissions get grouped into "Access my friends' information".

Below is a screenshot of what it looks like when asking for the full suite of permissions (I used the helpful Rell application to test). From this you can get an idea of what it looks like to the user based on which permissions you're asking for.

Asking for all permissions at once would be a little intimidating for users . . .

The New Dashboard for Facebook Platform

Facebook has decided to do away with notifications - the little messages notifying you of things friends did on platform applications, or giving you updates on applications you have installed:

While some of these messages are more nuisance than value, users have the ability to block notifications from specific applications, and many applications depend on these notifications to enable continuity of user experience (chess is a good example - knowing when to play).

The Dashboard

Facebook decided that these notifications were too intrusive, or something like that, so they decided to replace them with something called the "Dashboard":   
The dashboard functions as a place to see notifications, grouped by application and limited to the most recent three displayed in the summary.  
This is fine.  Hell, it could even be considered an improvement.  

Getting Alpha and Beta Confused

But the problem is that Facebook nuked notifications while the Dashboard feature was still in alpha.  On launch day for the new feature, the Dashboard wasn't operational for many applications.  It was irresponsible of Facebook to annihilate notifications with the replacement feature in alpha, especially given that many applications critically depend on light-touch messaging in providing a decent user experience.

XML isn't Supposed to be Pretty, but WTF?

I'll sign off with a little sample of what's coming out of Facebook these days, an XML response to a Dashboard API call.  

Finding the data in the response is like playing "where's waldo?" with XML  (hint:   "Message Content", "http://url.net", "Text Content", "TimeStamp", "MessageID"). 

I also like how Facebook devs use "elt" repetitions to indicate nesting depth, I can just hear the conversation now:
    "did you mean the  response_elt or the response_elt_elt?"
     . . . "dammit, I said the response_elt_elt_elt"
<Dashboard_getNews_response list="true">
    <Dashboard_getNews_response_elt key="312266072840" list="true">
        <Dashboard_getNews_response_elt_elt key="image" />
        <Dashboard_getNews_response_elt_elt key="news" list="true">
            <Dashboard_getNews_response_elt_elt_elt list="true">
                <Dashboard_getNews_response_elt_elt_elt_elt key="message">
                      Message Content
                </Dashboard_getNews_response_elt_elt_elt_elt>
                <Dashboard_getNews_response_elt_elt_elt_elt key="action_link" list="true">
                    <Dashboard_getNews_response_elt_elt_elt_elt_elt key="href">
                        http://url.net
                    </Dashboard_getNews_response_elt_elt_elt_elt_elt>
                    <Dashboard_getNews_response_elt_elt_elt_elt_elt key="text">
                         Text Content goes here
                    </Dashboard_getNews_response_elt_elt_elt_elt_elt>
                </Dashboard_getNews_response_elt_elt_elt_elt>
            </Dashboard_getNews_response_elt_elt_elt>
        </Dashboard_getNews_response_elt_elt>
        <Dashboard_getNews_response_elt_elt key="time">
              TimeStamp
        </Dashboard_getNews_response_elt_elt>
        <Dashboard_getNews_response_elt_elt key="fbid">
              MessageID
        </Dashboard_getNews_response_elt_elt>
    </Dashboard_getNews_response_elt>
</Dashboard_getNews_response>