go to hell facebook

by andrewray

HTML

<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
<div data-role="page">
    <div data-role="content">
        <div rel="out">log out if you need to first</div>
        <div rel="in">then click me</div>
    </div>
</div>

CSS

div[rel] {
    font-family:sans-serif;
    padding:15px 30px;
    border-radius:10px;
    font-size:40px;
    background:#eee;
    margin:20px 10px 0 0;
    cursor:pointer;
    display:inline-block;
    transition:all 0.5s;
    border:1px solid #aaa;
}

.yay {
    background:#0f0 !important;
    color:#fff;
}

JavaScript

var $in = $('[rel="in"]');

$.getScript('//connect.facebook.net/en_US/all.js', function() {
    FB.init({
        appId: '65511680302',
        xfbml: true,
        cookie: true,
        oauth: true
    });
    
    var promiseApi = function() {

        var defer = $.Deferred(),
            args = Array.prototype.slice.call(arguments || []);
    
        args.push(function(response) {
    
            // figure out if response is error..
            var error, parsed, debug;
    
            // obviously an error...
            if(response && response.error) {
                error = (response.error.message || response.error);
    
            // maybe an error?
            } else if ((response instanceof Array) && response[0].body) {
                try {
                    if((parsed = $.parseJSON(response[0].body)).error) {
                        // try to grab the user friendly error message
                        // and scrub out the prefix code in parens
                        error = parsed.error.message;
                    }
                } catch(e) {}
            }
    
            if(error) {
                // print out url and code for error
                debug = (args && args[0]) + ': ' + error;
                window.onerror('Could not select facebook friends: ' + debug);
    
                // return message with error code scrubbed out
                defer.reject({ msg: error.replace(/\(.+\) /, '') });
            } else {
                defer.resolve(response);
            }
        });
        FB.api.apply(FB, args);
    
        return defer.promise();
    };

    
    var resolver = function() {
        promiseApi('/me').then(function(a) {
            $in.addClass('yay');
            alert(a);
        });
    };
    
    var login = function() {
        $.get('http://www.google.com');
        FB.login( resolver );
        $.get('http://www.google.com');
    };
    
    $(document.body).on('click', '[rel="in"]', function(e) {
     ...