@foal/social
Version:
Social authentication for FoalTS
38 lines (37 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TwitterProvider = void 0;
// FoalTS
const abstract_provider_service_1 = require("./abstract-provider.service");
const user_info_error_1 = require("./user-info.error");
/**
* Twitter social provider.
*
* @export
* @class TwitterProvider
* @extends {AbstractProvider<TwitterAuthParameter, never>}
*/
class TwitterProvider extends abstract_provider_service_1.AbstractProvider {
configPaths = {
clientId: 'settings.social.twitter.clientId',
clientSecret: 'settings.social.twitter.clientSecret',
redirectUri: 'settings.social.twitter.redirectUri'
};
authEndpoint = 'https://twitter.com/i/oauth2/authorize';
tokenEndpoint = 'https://api.twitter.com/2/oauth2/token';
userInfoEndpoint = 'https://api.twitter.com/2/users/me';
usePKCE = true;
useAuthorizationHeaderForTokenEndpoint = true;
defaultScopes = ['users.read', 'tweet.read'];
async getUserInfoFromTokens(tokens) {
const response = await fetch(this.userInfoEndpoint, {
headers: { Authorization: `${tokens.token_type} ${tokens.access_token}` }
});
const body = await response.json();
if (!response.ok) {
throw new user_info_error_1.UserInfoError(body);
}
return body;
}
}
exports.TwitterProvider = TwitterProvider;