chen-facebook
Version:
facebook for Chen Framework
107 lines • 3.48 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
const web_1 = require('chen/web');
const core_1 = require('chen/core');
const auth_1 = require('./auth');
const api_1 = require('./api');
/**
* Facebook class
*/
let Facebook_1 = class Facebook extends core_1.Service {
/**
* Init hook
*/
init() {
this.credentials = this.context.config.get('extensions.chen-facebook', {});
if (!this.credentials.appId) {
throw new core_1.Exception('facebook app id is required');
}
if (!this.credentials.appSecret) {
throw new core_1.Exception('facebook app secret is required');
}
if (!this.credentials.version) {
throw new core_1.Exception('facebook api version is required');
}
}
/**
* Create facebook api caller
* @return {FacebookApi}
*/
api(token) {
return new api_1.FacebookApi(this.credentials.version, token || this.getAccessToken());
}
/**
* Set App ID
* @param {string} id
*/
setAppId(id) {
this.credentials.appId = id;
}
/**
* Set App Secret
* @param {string} secret
*/
setAppSecret(secret) {
this.credentials.appSecret = secret;
}
getLoginHelper(redirectUri) {
if (!(this.context instanceof web_1.Context)) {
throw new core_1.Exception(`Can't do facebook login in a non web context`);
}
return new auth_1.FacebookLogin(this, this.context, redirectUri);
}
/**
* Get credentials
* @return {FacebookCredentials}
*/
getCredentials() {
return core_1._.clone(this.credentials);
}
/**
* Get access token session key
* @return {string}
*/
getSessionKey(name) {
return `${Facebook_1.FB_SESS_PREFIX}${this.credentials.appId}_${name}`;
}
/**
* Set access token
* @param {string} token
*/
setAccessToken(token) {
this.accessToken = token;
if (this.context instanceof web_1.Context) {
this.context.request.session.set(this.getSessionKey('token'), token);
}
}
/**
* Get access token
* @return {string}
*/
getAccessToken() {
if (!this.accessToken && this.context instanceof web_1.Context) {
return this.context.request.session.get(this.getSessionKey('token'), null);
}
return this.accessToken || null;
}
};
let Facebook = Facebook_1;
/**
* FB session key
* @type {string}
*/
Facebook.FB_SESS_PREFIX = '__$$chen_facebook_';
Facebook = Facebook_1 = __decorate([
core_1.injectable,
__metadata('design:paramtypes', function () { return []; })
], Facebook);
exports.Facebook = Facebook;
//# sourceMappingURL=service.js.map