jaydata
Version:
Cross-platform HTML5 data-management, JavaScript Language Query (JSLQ) support for OData, SQLite, WebSQL, IndexedDB, YQL and Facebook (packaged for Node.JS)
95 lines (83 loc) • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require('../../TypeSystem/index.js');
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_index2.default.Class.define("$data.Authentication.FacebookAuth", _index2.default.Authentication.AuthenticationBase, null, {
constructor: function constructor(cfg) {
this.configuration = _index2.default.typeSystem.extend({
Url_code: '',
type_code: '',
scope: '',
Url_token: '',
type_token: '',
access_token: '',
app_id: ''
}, cfg);
},
Login: function Login(callbacks) {
if (this.Authenticated) {
return;
}
var provider = this;
provider.configuration.stateCallbacks = callbacks || {};
_index2.default.ajax({
url: this.configuration.Url_code,
data: 'type=' + provider.configuration.type_code + '&client_id=' + provider.configuration.app_id + '&scope=' + provider.configuration.scope,
type: 'POST',
dataType: 'json',
success: function success(data) {
if (typeof provider.configuration.stateCallbacks.pending == "function") provider.configuration.stateCallbacks.pending(data);
provider._processRequestToken(data);
provider.Authenticated = true;
},
error: function error() {
if (typeof provider.configuration.stateCallbacks.error == "function") provider.configuration.stateCallbacks.error(arguments);
}
});
},
Logout: function Logout() {
this.Authenticated = false;
},
CreateRequest: function CreateRequest(cfg) {
if (!cfg) return;
var _this = this;
if (cfg.url.indexOf('access_token=') === -1) {
if (cfg.url && this.Authenticated) {
var andChar = '?';
if (cfg.url.indexOf(andChar) > 0) andChar = '&';
if (this.configuration.access_token) cfg.url = cfg.url + andChar + 'access_token=' + this.configuration.access_token;
}
}
_index2.default.ajax(cfg);
},
_processRequestToken: function _processRequestToken(verification_data) {
var provider = this;
_index2.default.ajax({
url: provider.configuration.Url_token,
data: 'type=' + provider.configuration.type_token + '&client_id=' + provider.configuration.app_id + '&code=' + verification_data.code,
type: 'POST',
dataType: 'json',
success: function success(result) {
provider.configuration.access_token = result.access_token;
if (typeof provider.configuration.stateCallbacks.success == "function") provider.configuration.stateCallbacks.success(result);
},
error: function error(obj) {
var data = eval('(' + obj.responseText + ')');
if (data.error) {
if (data.error.message == "authorization_pending") {
setTimeout(function () {
provider._processRequestToken(verification_data);
}, 2000);
} else if ("authorization_declined") {
if (typeof provider.configuration.stateCallbacks.abort == "function") provider.configuration.stateCallbacks.abort(arguments);
}
}
}
});
}
}, null);
exports.default = _index2.default;
module.exports = exports['default'];