Skip to content

Instantly share code, notes, and snippets.

@kdonald
Created March 25, 2012 03:56
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kdonald/2191279 to your computer and use it in GitHub Desktop.
Save kdonald/2191279 to your computer and use it in GitHub Desktop.
Facebook AMD Module
define("facebook", ["jquery", "https://connect.facebook.net/en_US/all.js"], function($) {
$("<div id='fb-root'></div>").prependTo($("body"));
FB.init({
appId : 'YOUR_APP_ID', // App ID
channelUrl : '//YOUR_DOMAIN/channel.html', // Channel File
status : false, // check login status
cookie : false, // enable cookies to allow the server to access the session
xfbml : false // parse XFBML
});
function getLoginStatus() {
var deferred = $.Deferred();
FB.getLoginStatus(function(response) {
deferred.resolve(response);
});
return deferred.promise();
}
function login(permissions) {
var deferred = $.Deferred();
var status = getLoginStatus();
status.done(function(response) {
if (response.authResponse) {
deferred.resolve(response.authResponse);
} else {
FB.login(function(response) {
if (response.authResponse) {
deferred.resolve(response.authResponse);
} else {
deferred.reject();
}
}, permissions);
}
});
return deferred.promise();
}
function api(resource) {
var deferred = $.Deferred();
FB.api(resource, function(response) {
deferred.resolve(response);
});
return deferred.promise();
}
return {
getLoginStatus: getLoginStatus,
login: login,
api: api
};
});
// example usage:
require(["facebook"], function(facebook) {
var status = facebook.getLoginStatus();
// handle various login status responses
status.done(function(response) {
if ("connected" === response.status) {
// current user is signed into facebook and authorized with your app
} else if ("not_authorized" === response.status) {
// current user is signed into facebook but has not authorized your app
} else {
// current user is not signed into facebook
}
});
// force login, then invoke the Facebook api
var login = facebook.login({ scope: "email,user_birthday" });
login.done(function(authResponse) {
$.when(facebook.api("/me"), facebook.api("/me/picture")).then(function(me, picture) {
// do stuff with current user's profile data & picture
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment