UNPKG

@foal/social

Version:

Social authentication for FoalTS

41 lines (40 loc) 1.57 kB
"use strict"; 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;