@foal/social
Version:
Social authentication for FoalTS
41 lines (40 loc) • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FacebookProvider = void 0;
// std
const url_1 = require("url");
// FoalTS
const abstract_provider_service_1 = require("./abstract-provider.service");
const user_info_error_1 = require("./user-info.error");
/**
* Facebook social provider.
*
* @export
* @class FacebookProvider
* @extends {AbstractProvider<FacebookAuthParams, FacebookUserInfoParams>}
*/
class FacebookProvider extends abstract_provider_service_1.AbstractProvider {
configPaths = {
clientId: 'settings.social.facebook.clientId',
clientSecret: 'settings.social.facebook.clientSecret',
redirectUri: 'settings.social.facebook.redirectUri',
};
authEndpoint = 'https://www.facebook.com/v5.0/dialog/oauth';
tokenEndpoint = 'https://graph.facebook.com/v5.0/oauth/access_token';
userInfoEndpoint = 'https://graph.facebook.com/v5.0/me';
fields = ['id', 'name', 'email'];
defaultScopes = ['email'];
async getUserInfoFromTokens(tokens, params) {
const url = new url_1.URL(this.userInfoEndpoint);
url.searchParams.set('access_token', tokens.access_token);
const fields = params && params.fields ? params.fields : this.fields;
url.searchParams.set('fields', fields.join(','));
const response = await fetch(url.href);
const body = await response.json();
if (!response.ok) {
throw new user_info_error_1.UserInfoError(body);
}
return body;
}
}
exports.FacebookProvider = FacebookProvider;