84 lines
2.9 KiB
JavaScript
84 lines
2.9 KiB
JavaScript
(function(context,$) {
|
|
"use strict";
|
|
|
|
context.JK = context.JK || {};
|
|
context.JK.FacebookHelper = function(app) {
|
|
var logger = context.JK.logger;
|
|
var loginStatusDeferred = null;
|
|
var $self = $(this);
|
|
var connected = false;
|
|
|
|
function deferredLoginStatus() {
|
|
return loginStatusDeferred;
|
|
}
|
|
|
|
// wrap calls in FB JS API calls in this
|
|
// if the user is not logged in, they will be prompted to log in to facebook
|
|
// if they are already logged in, the deferred object is immediately returned
|
|
// returns a deferred object that never calls .fail(). Just call .done(function(response)),
|
|
// and check: if(response && response.status == "connected") to know if you should carry on wih the FB JS API call
|
|
function promptLogin() {
|
|
|
|
if(connected) {
|
|
// instantly return previous login info
|
|
return loginStatusDeferred;
|
|
}
|
|
|
|
loginStatusDeferred = $.Deferred();
|
|
|
|
FB.login(function(response) {
|
|
handle_fblogin_response(response);
|
|
}, {scope:'publish_stream'});
|
|
|
|
return loginStatusDeferred;
|
|
}
|
|
|
|
function handle_fblogin_response(response) {
|
|
|
|
logger.debug("facebook login response: status=" + response.status)
|
|
|
|
if(response.status == "connected") {
|
|
connected = true;
|
|
}
|
|
|
|
$self.triggerHandler('fb.login_response', {response: response});
|
|
|
|
loginStatusDeferred.resolve(response);
|
|
}
|
|
|
|
function initialize(fbAppID) {
|
|
loginStatusDeferred = $.Deferred();
|
|
var fbAppID_ = fbAppID;
|
|
window.fbAsyncInit = function() {
|
|
FB.init({
|
|
appId : fbAppID_,
|
|
// channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html',
|
|
status : true, // check the login status upon init?
|
|
cookie : true, // set sessions cookies to allow server to access the session?
|
|
xfbml : false, // parse XFBML tags on this page?
|
|
oauth : true // enable OAuth 2.0
|
|
});
|
|
|
|
// listen to see if the user is known/logged in
|
|
FB.getLoginStatus(function(response) {
|
|
handle_fblogin_response(response);
|
|
});
|
|
};
|
|
|
|
// Load the SDK Asynchronously
|
|
(function(d){
|
|
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
|
|
js = d.createElement('script'); js.id = id; js.async = true;
|
|
js.src = "//connect.facebook.net/en_US/all.js";
|
|
d.getElementsByTagName('head')[0].appendChild(js);
|
|
}(document));
|
|
}
|
|
|
|
this.initialize = initialize;
|
|
this.promptLogin = promptLogin;
|
|
this.deferredLoginStatus = deferredLoginStatus;
|
|
};
|
|
|
|
|
|
|
|
})(window, jQuery); |