Created
March 25, 2012 03:56
-
-
Save kdonald/2191279 to your computer and use it in GitHub Desktop.
Facebook AMD Module
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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