ngx-social-button
Version:
Social login/share buttons for Angular 6, 7, 8
124 lines (123 loc) • 12.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { BaseLoginProviderImpl } from '../entities/baseLoginProviderImpl';
import { SocialUser, LoginProviderClass } from '../entities/user';
export class FacebookLoginProvider extends BaseLoginProviderImpl {
/**
* @param {?} clientId
*/
constructor(clientId) {
super();
this.clientId = clientId;
this.TYPE = 'facebook';
this.loginProviderObj = new LoginProviderClass();
this.loginProviderObj.id = clientId;
this.loginProviderObj.name = 'facebook';
this.loginProviderObj.url = 'https://connect.facebook.net/en_US/sdk.js';
}
/**
* @return {?}
*/
initialize() {
return new Promise((resolve, reject) => {
this.loadScript(this.loginProviderObj, () => {
FB.init({
appId: this.clientId,
autoLogAppEvents: true,
cookie: true,
xfbml: true,
version: 'v2.8'
});
FB.AppEvents.logPageView();
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
/** @type {?} */
const accessToken = FB.getAuthResponse()['accessToken'];
FB.api('/me?fields=name,email,picture', (res) => {
resolve(FacebookLoginProvider.drawUser(Object.assign({}, { token: accessToken }, res)));
});
}
});
});
});
}
/**
* @param {?} response
* @return {?}
*/
static drawUser(response) {
/** @type {?} */
let user = new SocialUser();
user.id = response.id;
user.name = response.name;
user.email = response.email;
user.accessToken = response.accessToken;
user.image = 'https://graph.facebook.com/' + response.id + '/picture?type=normal';
return user;
}
/**
* @param {?=} scopes
* @return {?}
*/
signIn(scopes) {
return new Promise((resolve, reject) => {
FB.login((response) => {
console.log("facebook", response);
if (response.authResponse) {
/** @type {?} */
const accessToken = FB.getAuthResponse()['accessToken'];
FB.api('/me?fields=name,email,picture', (res) => {
console.log("me", res);
resolve(FacebookLoginProvider.drawUser(Object.assign({}, { accessToken: accessToken }, res)));
});
}
}, { scope: scopes && scopes.length > 0 ? scopes.join(',') : 'email,public_profile' });
});
}
/**
* @param {?=} share
* @return {?}
*/
sharing(share) {
return new Promise((resolve, reject) => {
FB.ui({
method: 'share',
href: share.href,
hashtag: (share.hashtag && share.hashtag.indexOf('#') >= 0) ? share.hashtag : null
}, function (response) {
console.log(response);
resolve();
});
});
}
/**
* @return {?}
*/
signOut() {
return new Promise((resolve, reject) => {
FB.logout((response) => {
resolve();
});
});
}
}
FacebookLoginProvider.PROVIDER_TYPE = 'facebook';
FacebookLoginProvider.SCOPES = {
EMAIL: 'email',
PUBLIC_PROFILE: 'public_profile'
};
if (false) {
/** @type {?} */
FacebookLoginProvider.PROVIDER_TYPE;
/** @type {?} */
FacebookLoginProvider.SCOPES;
/** @type {?} */
FacebookLoginProvider.prototype.TYPE;
/** @type {?} */
FacebookLoginProvider.prototype.loginProviderObj;
/** @type {?} */
FacebookLoginProvider.prototype.clientId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjZWJvb2tQcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1zb2NpYWwtYnV0dG9uLyIsInNvdXJjZXMiOlsibGliL3Byb3ZpZGVycy9mYWNlYm9va1Byb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJbEUsTUFBTSw0QkFBNkIsU0FBUSxxQkFBcUI7Ozs7SUFXOUQsWUFBb0IsUUFBZ0I7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFRO29CQUh0QixVQUFVO2dDQUNzQixJQUFJLGtCQUFrQixFQUFFO1FBSXBFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEdBQUcsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsMkNBQTJDLENBQUM7S0FDekU7Ozs7SUFFRCxVQUFVO1FBQ1IsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtnQkFDeEMsRUFBRSxDQUFDLElBQUksQ0FBQztvQkFDTixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3BCLGdCQUFnQixFQUFFLElBQUk7b0JBQ3RCLE1BQU0sRUFBRSxJQUFJO29CQUNaLEtBQUssRUFBRSxJQUFJO29CQUNYLE9BQU8sRUFBRSxNQUFNO2lCQUNoQixDQUFDLENBQUM7Z0JBQ0gsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFFM0IsRUFBRSxDQUFDLGNBQWMsQ0FB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UUFBUTtnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEIsT0FBTyxFQUFFLENBQUM7YUFDWCxDQUFDLENBQUM7U0FDUixDQUFDLENBQUM7S0FDTjs7OztJQUNELE9BQU87UUFDTCxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUMxQixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztLQUNKOztzQ0FwRnNDLFVBQVU7K0JBQ2pCO0lBQzlCLEtBQUssRUFBRyxPQUFPO0lBQ2YsY0FBYyxFQUFFLGdCQUFnQjtDQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VMb2dpblByb3ZpZGVySW1wbCB9IGZyb20gJy4uL2VudGl0aWVzL2Jhc2VMb2dpblByb3ZpZGVySW1wbCc7XG5pbXBvcnQgeyBTb2NpYWxVc2VyLCBMb2dpblByb3ZpZGVyQ2xhc3MgfSBmcm9tICcuLi9lbnRpdGllcy91c2VyJztcblxuZGVjbGFyZSBsZXQgRkI6IGFueTtcblxuZXhwb3J0IGNsYXNzIEZhY2Vib29rTG9naW5Qcm92aWRlciBleHRlbmRzIEJhc2VMb2dpblByb3ZpZGVySW1wbCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9WSURFUl9UWVBFID0gJ2ZhY2Vib29rJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTQ09QRVMgPSB7XG4gICAgRU1BSUwgOiAnZW1haWwnLFxuICAgIFBVQkxJQ19QUk9GSUxFOiAncHVibGljX3Byb2ZpbGUnXG4gIH07XG5cbiAgcHVibGljIFRZUEUgPSAnZmFjZWJvb2snO1xuICBwdWJsaWMgbG9naW5Qcm92aWRlck9iajogTG9naW5Qcm92aWRlckNsYXNzID0gbmV3IExvZ2luUHJvdmlkZXJDbGFzcygpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2xpZW50SWQ6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dpblByb3ZpZGVyT2JqLmlkID0gY2xpZW50SWQ7XG4gICAgdGhpcy5sb2dpblByb3ZpZGVyT2JqLm5hbWUgPSAnZmFjZWJvb2snO1xuICAgIHRoaXMubG9naW5Qcm92aWRlck9iai51cmwgPSAnaHR0cHM6Ly9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9zZGsuanMnO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPFNvY2lhbFVzZXI+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5sb2FkU2NyaXB0KHRoaXMubG9naW5Qcm92aWRlck9iaiwgKCkgPT4ge1xuICAgICAgICAgIEZCLmluaXQoe1xuICAgICAgICAgICAgYXBwSWQ6IHRoaXMuY2xpZW50SWQsXG4gICAgICAgICAgICBhdXRvTG9nQXBwRXZlbnRzOiB0cnVlLFxuICAgICAgICAgICAgY29va2llOiB0cnVlLFxuICAgICAgICAgICAgeGZibWw6IHRydWUsXG4gICAgICAgICAgICB2ZXJzaW9uOiAndjIuOCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBGQi5BcHBFdmVudHMubG9nUGFnZVZpZXcoKTtcblxuICAgICAgICAgIEZCLmdldExvZ2luU3RhdHVzKGZ1bmN0aW9uIChyZXNwb25zZTogYW55KSB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAnY29ubmVjdGVkJykge1xuICAgICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IEZCLmdldEF1dGhSZXNwb25zZSgpWydhY2Nlc3NUb2tlbiddO1xuICAgICAgICAgICAgICBGQi5hcGkoJy9tZT9maWVsZHM9bmFtZSxlbWFpbCxwaWN0dXJlJywgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShGYWNlYm9va0xvZ2luUHJvdmlkZXIuZHJhd1VzZXIoT2JqZWN0LmFzc2lnbih7fSwge3Rva2VuOiBhY2Nlc3NUb2tlbn0sIHJlcykpKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGRyYXdVc2VyKHJlc3BvbnNlOiBhbnkpOiBTb2NpYWxVc2VyIHtcbiAgICBsZXQgdXNlcjogU29jaWFsVXNlciA9IG5ldyBTb2NpYWxVc2VyKCk7XG4gICAgdXNlci5pZCA9IHJlc3BvbnNlLmlkO1xuICAgIHVzZXIubmFtZSA9IHJlc3BvbnNlLm5hbWU7XG4gICAgdXNlci5lbWFpbCA9IHJlc3BvbnNlLmVtYWlsO1xuICAgIHVzZXIuYWNjZXNzVG9rZW4gPSByZXNwb25zZS5hY2Nlc3NUb2tlbjtcbiAgICB1c2VyLmltYWdlID0gJ2h0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tLycgKyByZXNwb25zZS5pZCArICcvcGljdHVyZT90eXBlPW5vcm1hbCc7XG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cblxuXG4gIHNpZ25JbihzY29wZXM/OltzdHJpbmddKTogUHJvbWlzZTxTb2NpYWxVc2VyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIEZCLmxvZ2luKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZmFjZWJvb2tcIiwgcmVzcG9uc2UpO1xuICAgICAgICBpZiAocmVzcG9uc2UuYXV0aFJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBGQi5nZXRBdXRoUmVzcG9uc2UoKVsnYWNjZXNzVG9rZW4nXTtcbiAgICAgICAgICBGQi5hcGkoJy9tZT9maWVsZHM9bmFtZSxlbWFpbCxwaWN0dXJlJywgKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIm1lXCIsIHJlcyk7XG4gICAgICAgICAgICByZXNvbHZlKEZhY2Vib29rTG9naW5Qcm92aWRlci5kcmF3VXNlcihPYmplY3QuYXNzaWduKHt9LCB7YWNjZXNzVG9rZW46IGFjY2Vzc1Rva2VufSwgcmVzKSkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCB7IHNjb3BlOiBzY29wZXMgJiYgc2NvcGVzLmxlbmd0aCA+IDAgPyBzY29wZXMuam9pbignLCcpIDogJ2VtYWlsLHB1YmxpY19wcm9maWxlJyB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNoYXJpbmcoc2hhcmU/OmFueSk6IFByb21pc2U8YW55PntcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBGQi51aSh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnc2hhcmUnLFxuICAgICAgICAgICAgICAgIGhyZWY6IHNoYXJlLmhyZWYsXG4gICAgICAgICAgICAgICAgaGFzaHRhZzogKHNoYXJlLmhhc2h0YWcgJiYgc2hhcmUuaGFzaHRhZy5pbmRleE9mKCcjJyk+PTApP3NoYXJlLmhhc2h0YWcgOiAgbnVsbFxuICAgICAgICAgICAgfSwgZnVuY3Rpb24ocmVzcG9uc2Upe1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbiAgc2lnbk91dCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBGQi5sb2dvdXQoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxufSJdfQ==